在Android中动态添加LinearLayouts

时间:2013-03-07 02:10:52

标签: android dynamic view android-linearlayout

我正在尝试动态添加LinearLayouts但它不起作用。我想我只需要另一组眼睛来看一遍。任何人都可以帮助我吗?

LinearLayout parentLayout = (LinearLayout)findViewById(R.id.parentLayout);
        lLayout = new LinearLayout[8];
        for(int i = 0; i < lLayout.length; i++) {
            lLayout[i] = new LinearLayout(this);
            lLayout[i].setId(i);
            lLayout[i].setOrientation(LinearLayout.HORIZONTAL);
            if(i%2 == 0) {
                lLayout[i].setBackgroundColor(Color.GREEN);
            } else {
                lLayout[i].setBackgroundColor(Color.MAGENTA);
            }
            parentLayout.addView(lLayout[i]);
        }

3 个答案:

答案 0 :(得分:2)

您需要设置LayoutParams,尝试添加:

lLayout[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

答案 1 :(得分:0)

看起来您正在尝试使用linearlayout自己创建listview,而不是实际使用已经支持的ListView。

如果您确实尝试这样做,则应首先在视图内部给出布局宽度和高度。我还将列表放在一个滚动视图中,以防它溢出外部布局。

答案 2 :(得分:0)

也许试试这个

LinearLayout parentLayout = (LinearLayout)findViewById(R.id.parentLayout);
        lLayout = new LinearLayout[8];
        for(int i = 0; i < lLayout.length; i++) {
            lLayout[i] = new LinearLayout(this);
            lLayout[i].setId(i);
            lLayout[i].setOrientation(LinearLayout.HORIZONTAL);
            if(i%2 == 0) {
                lLayout[i].setBackgroundColor(Color.GREEN);
            } else {
                lLayout[i].setBackgroundColor(Color.MAGENTA);
            }

            LinearLayout.LayoutParams myLayoutParams = new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

            myLayoutParams.leftMargin = 0;
            myLayoutParams.topMargin = 50 * i;
            myLayoutParams.width = myScreenSize; //e.g. 480
            myLayoutParams.height = 50;

            lLayout[i].setLayoutParams(myLayoutParams);

            parentLayout.addView(lLayout[i]);
        }