我有一个创建多个按钮的方法
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()
等。
奇怪的事发生了。如果我尝试使按钮大于其默认大小,它可以工作,如果我尝试使按钮小于其默认大小,它不起作用!
我该怎么办?谢谢
答案 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);
但我想知道我是否可以用类似的方式设置按钮的宽度。