1

我正在尝试根据某些参数动态创建具有动态按钮数量的线性布局。到目前为止,我有一些可以编译的代码,但是当它运行时它不显示任何内容。

public void displayMenu() 
{
    LinearLayout lin =  new LinearLayout(CategoryMenu.this);        
    lin.setOrientation(LinearLayout.VERTICAL);
    lin.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    ArrayList<Button> btnList= new ArrayList<Button>();

    //Test Button
    Button btn1= new Button(this);
    btn1.setText("Dylan");      
    lin.addView(btn1);  

    for (int i =0 ; i < 5; i++){

    btnList.add(new Button(this));
    btnList.get(i).setText("Hello:"+i);     
    lin.addView(btnList.get(i));
    Log.i("CategoryMenu","Adding btn to view");
    }       
}

我做错了什么?我确定我在这里遗漏了一些愚蠢的东西。

4

5 回答 5

2

您必须添加lin到当前的视图层次结构,或创建一个新的调用setContentView(lin);

于 2013-07-23T08:03:15.723 回答
1

您似乎没有将该线性布局添加到视图组父级。

毕竟你的代码你应该添加类似

myParentViewGroup.add(lin);
于 2013-07-23T08:03:26.453 回答
0

您还必须添加lin布局。目前您刚刚创建了一个 Linearlayout,但尚未将其附加到任何布局。

于 2013-07-23T08:21:14.893 回答
0

线性布局 lin = new LinearLayout(CategoryMenu.this);
lin.setOrientation(LinearLayout.VERTICAL); lin.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

ArrayList<Button> btnList= new ArrayList<Button>();
于 2013-07-23T08:41:33.423 回答
0

lin.addView(btn1);

您应该为 Button 定义 layoutparams,例如:

 // Defining the layout parameters of the Button
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);

        // Setting the parameters on the Button
        tv.setLayoutParams(lp);
于 2013-07-23T08:08:26.167 回答