我正在动态创建水平LinearLayout,每个视图都添加了5个视图。然后将其添加到滚动视图内的垂直LinearLayout。
我通过layout.setGravity(Gravity.CENTER);设置了引力,但是它不是居中的,而是左边的。
创建水平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);
}
创建添加到linar布局
的按钮的代码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"
/>
答案 0 :(得分: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,因为它会影响你所追求的结果。
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html