【问题标题】:Trying to center a horizontal LinearLayout layout试图使水平 LinearLayout 布局居中
【发布时间】:2013-04-05 06:18:00
【问题描述】:

我正在动态创建水平线性布局,每个视图添加了 5 个视图。然后将其添加到滚动视图内的垂直 LinearLayout。

我通过 layout.setGravity(Gravity.CENTER); 设置了重力,但它不是居中而是左对齐。

创建水平线性布局的代码

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

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以尝试像这样指定布局参数...

    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。

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

    【讨论】:

    • 嗨,我很困惑,现在水平布局设置为 WRAP_CONTENT
    • @Tedpottel 先试试上面的,别介意我对 wrap_content 的评论。如果它不起作用,则将定义布局参数的第一行更改为 wrap_content、wrap_content。
    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    相关资源
    最近更新 更多