spongyboss
spongyboss

Reputation: 8666

Add views dynamically android

I am trying to add textviews dynamically to my activity and I am able to do so but the added textviews are getting added next to each other on the right side and what I want is to have each textview underneath each other.

Here is my code:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearLayout);

        for(int x = 0;x < 10; x++){
            LinearLayout layout = new LinearLayout(this);
            TextView tv = new TextView(this);
            tv.setText("Text View "+x);
            layout.setOrientation(LinearLayout.HORIZONTAL);
            layout.addView(tv);
            linearLayout.addView(layout);

        }
    }

Main XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout"
        android:orientation="horizontal"></LinearLayout>
</RelativeLayout>

Upvotes: 1

Views: 52

Answers (2)

Hiren Patel
Hiren Patel

Reputation: 52790

You can do this way:

You have to set orientation vertical of your parent Linear Layout:

Your xml should looks like this:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout"
        android:orientation="vertical"></LinearLayout>
</RelativeLayout>

Your java code should looks like this:

for(int x = 0;x < 10; x++){
     TextView tv = new TextView(this);
     tv.setText("Text View "+x);
     linearLayout.addView(tv);
}

Hope this will help you.

Upvotes: 2

Aakash
Aakash

Reputation: 5251

Instead of this:

layout.setOrientation(LinearLayout.HORIZONTAL);

Do this to your linear layout:

layout.setOrientation(LinearLayout.VERTICAL);

Upvotes: 1

Related Questions