Android 安卓:如何将程序创建的按钮居中?

Android 安卓:如何将程序创建的按钮居中?,android,Android,我需要以编程方式创建一个按钮,并使其在水平和垂直布局上居中。我正在使用以下代码进行尝试: LinearLayout ll = (LinearLayout)findViewById(R.id.layoutItem); Button b = new Button(this); b.setBackgroundDrawable(getResources().getDrawable(R.drawable.button)); b.setLayoutParams(new LayoutParam

我需要以编程方式创建一个按钮,并使其在水平和垂直布局上居中。我正在使用以下代码进行尝试:

LinearLayout ll = (LinearLayout)findViewById(R.id.layoutItem);
Button b = new Button(this);        
b.setBackgroundDrawable(getResources().getDrawable(R.drawable.button));
b.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 
b.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
ll.addView(b);
但它不起作用。按钮从顶部向左伸出


关于如何解决这个问题,有什么线索吗?

我会采取以下措施:

LinearLayout.LayoutParams ll = (LinearLayout.LayoutParams)b.getLayoutParams();    
ll.gravity = Gravity.CENTER;
b.setLayoutParams(ll);

看看这是否有效

或者您可以使用
相对性视图
作为您的父视图并执行以下操作:

this.testButton= (Button) this.findViewById(R.id.testButton);

RelativeLayout.LayoutParams testLP = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

testLP.addRule(RelativeLayout.CENTER_IN_PARENT);

this.testButton.setLayoutParams(testLP);

您可以为
RelativeLayout

设置多个规则,尝试设置
LinearLayout
LayoutParams
,而不是
按钮的
LayoutParams
本身。LinearLayout的参数是通过XML设置的。如果我不设置按钮的参数,它将膨胀以填充父级。为什么不在XML文件中居中?@Juice,因为我需要通过编程创建按钮,以便在添加其他内容(即,顺序很重要)后将其添加到布局中。是否有设置数量的按钮?但它们的顺序很重要?没问题……很高兴我能帮上忙。:)谢谢我会记住这一点作为替代解决方案。上面的那张很有魅力。是的,我正在发布答案的过程中,他发布了。我想我也会发这封信。。。由于
RelativeLayout
让您可以更自由地以奇怪的方式展示
视图
。。。而不仅仅是垂直或水平。