动态创建的按钮宽度不会改变

时间:2014-07-21 13:29:15

标签: android button

有人可以告诉我为什么我的按钮宽度没有增加。我做错了什么。 我正在尝试动态创建按钮并设置它们的宽度和高度。

public class MainActivity extends Activity {

    LinearLayout l;
    LinearLayout linear;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        l=(LinearLayout) findViewById(R.id.linear);






        for(int i=0;i<10;i++)
        {
             linear=new LinearLayout(this);
            LinearLayout.LayoutParams par=new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
            linear.setLayoutParams(par);
            linear.setOrientation(LinearLayout.HORIZONTAL);
            Button b=new Button(this);



            b.setId(i+1);
            b.setText("button:"+(i+1));
            b.setWidth(800);// set the width of button
            b.setHeight(30);// height of button


            linear.addView(b);

            l.addView(linear);  // main layout in which i have to show button
        }


    }


}

这是输出:我得到了什么 在此处输入图像描述

enter image description here

4 个答案:

答案 0 :(得分:1)

要自动增加按钮宽度,可以使用wrap_content。

您可以使用此代码以编程方式设置LayoutParams

把这个:

b.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));

之前:

linear.addView(b);

答案 1 :(得分:0)

使用LayoutParams添加动态按钮,如下面的代码

Button b=new Button(this);
b.setId(i+1);
b.setText("button:"+(i+1));

LayoutParams lp1 = new LayoutParams(800,30);
linear.addView(b, lp1);

答案 2 :(得分:0)

给出按钮布局的宽度和高度,就像对LinearLayout一样。

答案 3 :(得分:0)

同样在这种情况下,您无需在linear(LinearLayout)中添加按钮,因为您先将它们添加到linear,然后将linear添加到l在同一个循环中。每个LinearLayout(线性)只能容纳一个按钮,不需要。将所有按钮添加到linear,当循环完成后,将其添加到l(仅一次)或不创建“线性”并将其直接添加到l

你可以做些什么来使它更简单:

for(int i=0;i<10;i++)
    {
        Button b=new Button(this);
        b.setId(i+1);
        b.setText("button:"+(i+1));
        b.setWidth(800);// set the width of button
        b.setHeight(30);// height of button
        b.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

        l.addView(b);  // main layout in which i have to show button
    }