2013-04-04 1 views
0

나는 각각에 5 개의 뷰가 추가 된 가로형 LinearLayout을 동적으로 생성하고 있습니다. 그런 다음 스크롤 뷰 내부에있는 수직 LinearLayout에 추가됩니다.가로형 LinearLayout 레이아웃을 중심에 넣으려고 시도합니다.

layout.setGravity (Gravity.CENTER)로 중력을 설정했지만 중심에 있지 않고 왼쪽에 있습니다.

수평은 LinearLayouts에게

void AddButton(LinearLayout layout, String name, int i) 
{  

    favBut[i]=new ImageView(this); 
    if (cGlobals.conFav.contains(name) ) 
     favBut[i].setImageResource(R.drawable.heartselected2); 
    else 
     favBut[i].setImageResource(R.drawable.heartunselected2); 

    favBut[i].setId(defStartFavId+i); 
    favBut[i].setOnClickListener(this); 

    layout.addView(favBut[i]); 

    int w=getWindowManager().getDefaultDisplay().getWidth(); 
    w-=200; // hearts 
    w=w/2; 


    Button but1=new Button(this); 
    but1.setText(name); 
    but1.setWidth(w); 
    layout.addView(but1); 

    but1.setOnClickListener(this); 
    but1.setId(defStartButId+i);  

} 

XML 파일 레이아웃

<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:orientation="horizontal" > 

     <Button 
     android:id="@+id/butVol" 
     android:layout_width="140dp" 
     android:layout_height="wrap_content" 
     android:textSize="24px" 
     android:text="Volume" 
     android:textColor="#ff0000ff" 
     android:layout_gravity="center" 
    /> 

    <Button 
     android:id="@+id/butRington" 
     android:layout_width="140dp" 
     android:layout_height="wrap_content" 
     android:textSize="24px" 
     android:text="Rington" 
     android:textColor="#ff0000ff" 
     android:layout_gravity="center" 
    /> 
012,351,641의 linar 레이아웃에 추가 버튼을지지

for(int i=0; i<cGlobals.mNames.length; i+=2) 
{ 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.HORIZONTAL); 
    layout.setGravity(Gravity.CENTER); 
    LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    layout.setLayoutParams(llp); 
    AddButton(layout, cGlobals.mNames[i], i); 

    TextView t=new TextView(this); 
    t.setText(" "); 
    layout.addView(t); 

    if (i+1<cGlobals.mNames.length) 
     AddButton(layout, cGlobals.mNames[i+1], i+1); 

    Container.addView(layout); 
} 

코드를 생성하는 코드

답변

2

당신은이 같은 레이아웃 매개 변수를 지정할 시도 할 수 있습니다 ...

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
layoutParams.gravity = Gravity.CENTER; 
layout.addView(favBut[i], layoutParams); 
,

및/또는

Container.addView(layout, layoutParams); 

어쩌면 당신이 후있는 결과에 depdning WRAP_CONTENT하는 MATCH_PARENT을 변경합니다.

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html

+0

안녕, 나는 혼동 해요, 수평 레이아웃은 지금 –

+0

@Tedpottel 그냥 wrap_content에 대한 내 의견을 마음, 위의 첫 번째 결코 시도하지 WRAP_CONTENT로 설정됩니다. 작동하지 않으면 레이아웃 parms을 정의하는 맨 위 행을 wrap_content, wrap_content로 변경하십시오. – logray

관련 문제