JeffLemon
JeffLemon

Reputation: 89

Android - Switch between layouts

I have two layouts, what is the best way to switch between the two layouts when a user clicks on a button?

Upvotes: 2

Views: 16834

Answers (4)

lory105
lory105

Reputation: 6322

The best way is to use android.widget.ViewFlipper. With it you can create different layout from xml and then switch among them with simple method like this:

   ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.myViewFlipper);

   // you can switch between next and previous layout and display it
   viewFlipper.showNext();
   viewFlipper.showPrevious();

  // or you can switch selecting the layout that you want to display
  viewFlipper.setDisplayedChild(1);
  viewFlipper.setDisplayedChild(viewFlipper.indexOfChild(findViewById(R.id.secondLayout)

Xml example with tree layouts:

     <ViewFlipper
            android:id="@+id/myViewFlipper"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:id="@+id/firstLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
               [...]
            </LinearLayout>

            <LinearLayout
                android:id="@+id/secondLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
               [...]
            </LinearLayout>

            <LinearLayout
                android:id="@+id/thirdLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
              [...]
            </LinearLayout>
      </ViewFlipper>

Upvotes: 2

Fahad Ishaque
Fahad Ishaque

Reputation: 1936

Use "fragment manager" after creating fragments and putting your layouts into it on run time or "view pager" as it can also add swapping effect. Do not use setContentView(R.layout.your_layout) without clearing the previous layout (use "gone" or "clear") for changing layout on run time as it slows down your app (because now there are two layout running) and even creates confusion for the app.

Upvotes: 1

Michele
Michele

Reputation: 6131

You could call setContentView(R.layout.layout2) on ButtonClick

Upvotes: 6

kingori
kingori

Reputation: 2616

Use ViewSwitcher.

  1. make one layout file that includes two layouts. your two layouts should be place in viewswitcher.

  2. associate an onclick listener that switch two layout with a button.

if you separate two layouts in different file, you can use tag in layout xml file.

Upvotes: 1

Related Questions