1

複数のボタンを作成するメソッドがあります

public Button[] generaBottoniRisposta(int numeroBottoni, Context context){  
    Button bottoni[]= new Button[numeroBottoni];

    /*genero un tot di bottoni in base a numeroBottoni, è necessario avere il context*/
    for(int i=0; i < bottoni.length;i++){           
            bottoni[i] = new Button(context);
            bottoni[i].setId(i);
            bottoni[i].setText(String.valueOf(i+1));
            LayoutParams param = new LinearLayout.LayoutParams(50, 50);
            bottoni[i].setLayoutParams(param);          
        }

    return  bottoni;
    }

次に、それらをグリッドレイアウトに追加する別のメソッド。

これらのボタンの幅を設定したいのですが、できません。

setWidth()setMaxWidth()invalidate()など、たくさんのことを試しました。

何か奇妙なことが起こります。ボタンをデフォルトのサイズより大きくしようとすると機能しますが、ボタンをデフォルトのサイズより小さくしようとすると機能しません!

どうすればいいですか?ありがとうございました

4

5 に答える 5

3

のようなものを使用してみてくださいLayoutParams..

RelativeLayout.LayoutParams rel_bottone = new RelativeLayout.LayoutParams(buttonWidth, buttonHeight);
button.setLayoutParams(rel_bottone);

レイアウトは、ボタンを含む親レイアウトに依存します。

于 2013-02-07T08:58:37.077 に答える
0

このようなものを試してください:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
button.setLayoutParams(params);
于 2013-02-07T09:03:04.953 に答える
0

setlayoutparams はあなたが望むことをするべきだと思います。このスレッドの回答のように。 プログラムによるビュー幅の設定

于 2013-02-07T09:00:10.187 に答える
0

これを試して:

LinearLayout.LayoutParams params = button.getLayoutParams();
params.width = 100;
button.setLayoutParams(params);

もう 1 つ、親が LinearLayout の場合は LinearLayout.LayoutParams が使用され、親が RelativeLayout の場合は RelativeLayout.LayoutParams が使用されます。

于 2013-02-07T09:01:33.417 に答える
0

私のボタンはグリッドレイアウトの中にあります。ボタンの幅を設定しようとする代わりに、セルの幅を指定する GridLayout.LayoutParams を使用しようとしましたが、今ではうまくいくようです。

これは、ボタンを GridLayout に追加するために使用するコードです

Spec row = GridLayout.spec(numeroRiga, 1); 
            Spec colspan = GridLayout.spec(numeroColonna, 1);
            GridLayout.LayoutParams gridLayoutParam = new GridLayout.LayoutParams(row,colspan);
            gridLayoutParam.width=50;
            gridLayoutParam.height=50;

gridLayout.addView(button,gridLayoutParam);

しかし、同様の方法でボタンの幅を設定できるかどうか疑問に思っています。

于 2013-02-07T09:54:39.503 に答える