2012-07-25 12 views
7

プログラム的にボタンを作成し、それを水平方向と垂直方向の両方に配置する必要があります。私は次のコードで試しています:Android:ボタンをプログラム的に作成する方法

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

それが動作するかどうかを確認:

+0

'Button'自体の' LayoutParams'の代わりに 'LinearLayout'の' LayoutParams'を設定しようとします。 – DroidBender

+0

LinearLayoutのパラメータはXMLで設定されます。ボタンのパラメータを設定しないと、親を満たすために膨張します。 –

+0

XMLファイルの中心に置くのはなぜでしょうか? – JuiCe

答えて

18

私のような何かをするだろう。

+0

作品。ありがとう、たくさんの男。 –

+0

問題ありません...私は助けてうれしいです。 :) – 0gravity

10

それとも、あなたの親ViewとしてRelativeLayoutを使用して、次の操作を行うことができます。

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ためのいくつかのルールを設定することができます。

+0

ありがとう。これを別の解決策として覚えておきます。上記のものは魅力的に機能しました。 –

+0

ええ、私は彼がしたときに答えを掲示していた。ちょうど私もこれを投稿すると思っていました... 'RelativeLayout'は、垂直または水平の代わりに、あなたの' Views'を奇妙な方法でレイアウトする自由をもっと与えているからです。 – prolink007

関連する問題