LinearLayout中的按钮无法以编程方式填充整个空间

问题描述:

所以我有一个水平模式下的LinearLayout,我随时在代码中添加按钮,我喜欢它们全部填充空间。LinearLayout中的按钮无法以编程方式填充整个空间

这是我当前的代码至今:

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
              ViewGroup.LayoutParams.WRAP_CONTENT); 
layoutParams.gravity = Gravity.FILL; 

,我把它添加到我的观点在这里:

linearLayout.addView(button, layoutParams); 

它所做的就是添加按钮,如果它是wrap_content,而不是扩大他们的宽度来填充可用空间,如按钮看起来左对齐。

我也试过linearLayout.setGravity(Gravity.FILL_HORIZONTAL);

linearLayout.setWeightSum(++weightSum); 
linearLayout.addView(button, layoutParams); 

其中layoutParams在这种情况下是:

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
              ViewGroup.LayoutParams.WRAP_CONTENT, 1); 

我也试过每答案的布局宽度设置为零到其他问题。

我是否缺少另一种技术?

编辑:我想通了,我忘了将LinearLayout的宽度设置为match_parent而不是wrap_content

Button的背景具有“边距”,所以即使按钮之间没有空间,它们也会始终存在间隙。您必须将背景更改为您自己的图像,该图像没有这些边距。

编辑:你应该使用按钮的权重。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      0, LayoutParams.WRAP_CONTENT); 
    params.weight = 1; 
    for(int i = 0; i < 5; ++i) { 
     Button button = new Button(this); 
     button.setText("Button" + (i + 1)); 
     linearLayout.addView(button, params); 
    } 
+0

空白是好的,但问题是按钮不扩大填补可用空间,所以所有的按钮看起来像他们左对齐。 – Jasoneer

+0

对不起,我误解了你的问题。这里有一个更新的答案。 – Michael

+0

我想我已经尝试过了,包括将宽度设置为0.它不起作用:( – Jasoneer