9

プログラムでボタンを作成し、水平方向と垂直方向の両方でレイアウトの中央に配置する必要があります。私は次のコードで試しています:

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

しかし、それは機能していません。ボタンは左上に出てきます。

これを修正する方法についての手がかりはありますか?

4

2 に答える 2

22

私は次のようなことをします:

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

それが機能するかどうかを確認してください。

于 2012-07-25T19:58:08.417 に答える
10

または、 aRelativeLayoutを親として使用しViewて、次のことを行うことができます。

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

于 2012-07-25T20:02:08.183 に答える