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);
}
空白是好的,但问题是按钮不扩大填补可用空间,所以所有的按钮看起来像他们左对齐。 – Jasoneer
对不起,我误解了你的问题。这里有一个更新的答案。 – Michael
我想我已经尝试过了,包括将宽度设置为0.它不起作用:( – Jasoneer