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

时间:2011-08-28 18:29:58

标签: android android-layout android-widget android-ui

所以我在水平模式下有一个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

1 个答案:

答案 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);
    }