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

我认为 setlayoutparams 应该做你想做的。就像在这个线程中的答案一样。 以编程方式设置视图宽度

于 2013-02-07T09:00:10.187 回答
0

试试这个:

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

当父级是LinearLayout 时使用LinearLayout.LayoutParams,而父级是RelativeLayout 时使用RelativeLayout.LayoutParams。

于 2013-02-07T09:01:33.417 回答
0

尝试这样的事情:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
button.setLayoutParams(params);
于 2013-02-07T09:03:04.953 回答
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 回答