2013-04-04 71 views
0

我动态创建水平LinearLayout与5添加到每个视图。然后将其添加到滚动视图内的垂直LinearLayout。试图居中水平LinearLayout布局

我通过layout.setGravity(Gravity.CENTER)设置了引力,但它不居中,但是已经保持algined。

创建水平LinearLayouts

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); 
} 

代码及牡丹加入到均有直线布局的按钮

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" 
    /> 
代码

回答

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); 

,也许改变MATCH_PARENT到WRAP_CONTENT depdning对你之后的结果。

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

+0

嗨,我是迷惑,水平布局设置为WRAP_CONTENT现在 – 2013-04-04 23:05:41

+0

@Tedpottel只是尝试上述第一,别提我对WRAP_CONTENT评论。如果它不起作用,则将定义布局参数的第一行更改为wrap_content,wrap_content。 – logray 2013-04-04 23:14:24