以编程方式在LinearLayout中添加三个按钮

时间:2012-06-30 12:04:12

标签: android button android-linearlayout

我正在以编程方式创建一个LinearLayout,我在这个布局中添加了三个按钮,但是它们在另一个上面显示了一个。

如何在线显示按钮?

阅读我可能已经明白我需要设置一个LayoutParams但是我没弄明白怎么做..

我已尝试过这个,但它并没有成功。

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
);
ll.addView(b1, layoutParams);
ll.addView(b2, layoutParams);
ll.addView(b3, layoutParams);

感谢您的帮助!

修改

可能我需要添加更多细节。

我在布局中也有其他东西,但我没关系,我为按钮创建了一个额外的布局。

现在按钮排成一行,但它们的宽度不同..:/

我试过这个,但没有帮助..

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

4 个答案:

答案 0 :(得分:3)

ll.setOrientation(LinearLayout.HORIZONTAL);

允许您在水平线对齐中设置按钮。

但要为所有三个按钮提供平衡的空间。您必须将所有三个weight对象的Button属性设置为1

编辑:

对所有按钮执行此操作。

LinearLayout.LayoutParams params = button.getLayoutParams();
params.weight = 1;
button.setLayoutParams(params);

设置所有按钮的重量。

此致 Aqif Hamid

答案 1 :(得分:2)

试试这个:

ll.setOrientation(LinearLayout.HORIZONTAL);

答案 2 :(得分:0)

所有MATCH_PARENT都应该有宽度或高度的LayoutParams.WRAP_CONTENT(根据LinearLayout方向至少有一个)

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT

答案 3 :(得分:0)

试一试:

    LinearLayout gvDivisao = (LinearLayout) findViewById(R.id.gvDivisao);
    LayoutInflater inflater = getLayoutInflater();
    LayoutParams btDivLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);

    Button btDivA = (Button)inflater.inflate(R.layout.button_divisao, null);
    btDivA.setText("A");
    gvDivisao.addView( btDivA, btDivLayoutParams);