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
让您可以更自由地以奇怪的方式展示视图
。。。而不仅仅是垂直或水平。