Reputation: 6451
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
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
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
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
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