AMH
AMH

Reputation: 6451

dynamically add remove control form linearlayout

I have 3 layouts, I need when click on button access certain layout and ad remove controls from and in it any idea how to achieve that , this is the code I use

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.20"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/backbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Back" />

        <Button
            android:id="@+id/backbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="next" />
    </LinearLayout>
    <!-- the two columns part -->

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="0.80"
        android:orientation="horizontal" >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="0.80" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="First Name" />
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="0.20" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="second Name" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

Upvotes: 6

Views: 25595

Answers (4)

K_Anas
K_Anas

Reputation: 31466

Remove view from parent on Android:

View myView = findViewById(R.id.my_view);
ViewGroup parent = (ViewGroup) myView.getParent();
parent.removeView(myView);

Android remove all child views:

LinearLayout formLayout = (LinearLayout)findViewById(R.id.formLayout);
formLayout.removeAllViews();

Add view to parent on Android:

Button myButton = new Button(getApplicationContext());
myButton.setLayoutParameters(new LinearLayout.LayoutParams(
                                     LinearLayout.LayoutParams.FILL_PARENT,
                                     LinearLayout.LayoutParams.FILL_PARENT));

myLayout.addView(myButton);

you can use:

LinearLayout.LayoutParams.FILL_PARENT

or

LinearLayout.LayoutParams.WRAP_CONTENT

Upvotes: 21

kameny
kameny

Reputation: 2370

Add andoird:id="@+id/linerlayout_1" after that you can access this view easy inside the code with the findviewbyid() method.

For examlpe: place this inside the button's onclicklistener method.

LinearLayout ll = (LinearLayout) findViewById(R.id.linerlayout);
ll.setVisibility(View.GONE); // this row will hide the entire linerlayout
ll.addView(someView); //this row will add the specified View f.e.: TextView
ll.removeView(otherView); // this row will remove the view

And you can manage th view visibility by xml attribute android:visibility too.

Upvotes: 2

Ika
Ika

Reputation: 1738

Look at the setVisibility method of the View class. It allows you to make Views appear or disappear from the UI very simply.

In your button's click listener just add view.setVisibility(View.GONE) to make any layout or widget go away. You can make it reappear by calling view.setVisibility(View.VISIBLE)

Upvotes: 1

Bob
Bob

Reputation: 23000

Sample for dynamically add or remove a view:

TextView tv = new TextView(this);

        tv.setWidth(LayoutParams.WRAP_CONTENT);

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.RIGHT;
        tv.setLayoutParams(params);
        tv.setTextAppearance(this, R.style.darkTextNormal);
        tv.setBackgroundResource(R.color.lightBlue);
        tv.setTextSize(16);

yourLinearLayout.addView(tv);

// or

yourLinearLayout.removeView(tv);

Upvotes: 0

Related Questions