0

我正在以编程方式创建一个 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

4 回答 4

3
ll.setOrientation(LinearLayout.HORIZONTAL);

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

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

编辑:

对所有按钮执行此操作。

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

为所有按钮设置权重。

问候, 阿基夫·哈米德

于 2012-06-30T12:11:05.910 回答
2

试试这个:

ll.setOrientation(LinearLayout.HORIZONTAL);
于 2012-06-30T12:07:39.557 回答
0

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

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
于 2012-06-30T12:06:24.480 回答
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);
于 2013-02-16T20:31:11.160 回答