如何动态更改按钮的宽度

时间:2013-02-07 08:55:00

标签: android

我有一个创建多个按钮的方法

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

然后将另一种方法添加到gridlayout。

我想设置这些按钮的宽度,但我无法做到。

我尝试了很多东西,setWidth()setMaxWidth()invalidate()等。

奇怪的事发生了。如果我尝试使按钮大于其默认大小,它可以工作,如果我尝试使按钮小于其默认大小,它不起作用!

我该怎么办?谢谢

5 个答案:

答案 0 :(得分:3)

尝试使用LayoutParams,例如..

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

布局取决于包含按钮的父布局..

答案 1 :(得分:0)

我认为setlayoutparams应该做你想要的。就像在这个帖子中的答案一样。 Set View Width Programmatically

答案 2 :(得分:0)

试试这个:

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

当parent是LinearLayout时使用LinearLayout.LayoutParams,当parent是RelativeLayout时使用RelativeLayout.LayoutParams。

答案 3 :(得分:0)

尝试这样的事情:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
button.setLayoutParams(params);

答案 4 :(得分:0)

我的按钮位于gridlayout内。我试图使用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);

但我想知道我是否可以用类似的方式设置按钮的宽度。