Nelson.b.austin
Nelson.b.austin

Reputation: 3190

Dynamically Adding LinearLayouts in Android

I'm trying to add LinearLayouts dynamically but it's just not working. I think I just need another set of eyes to look it over. Can anyone help me?

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]);
        }

Upvotes: 3

Views: 13354

Answers (3)

Leo
Leo

Reputation: 3143

Maybe try this

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]);
        }

Upvotes: 0

ElefantPhace
ElefantPhace

Reputation: 3814

You need to set LayoutParams, try adding this:

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

Upvotes: 2

eski
eski

Reputation: 7905

It looks like you are trying to make a listview yourself using linearlayouts rather than actually using the ListView already supported.

If you are actually trying to do that, you should first give the layouts inside the view a width and height. I'd also put the list in a scrollview in case it overflows the outer layout.

Upvotes: 0

Related Questions