所以我在水平模式下有一个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
。
答案 0 :(得分:3)
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);
}