How can i change included xml layout to another layout on java code?

40,133

Solution 1

I suggest ViewFlipper inside RelativeLayout of your include statements. Try like this:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/vf"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <include android:id="@+id/include1" layout="@layout/ikinci" />
    <include android:id="@+id/map" layout="@layout/third_layout" />

</ViewFlipper>

Access ViewFlipper as below. Initially first layout is output:

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf);

For Button onClickListener:

button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                vf.setDisplayedChild(1);
            }
        });

Solution 2

There is two ways to change layouts in code:

A. Change visibility. Include tow different layouts in your xml:

<include 
    android:id="@+id/id1"
    android:visibility="visible"/>
<include 
    android:id="@+id/id2"
    android:visibility="gone"/>

and in code use this:

findViewById(R.id.id1).setVisibility(View.GONE);
findViewById(R.id.id2).setVisibility(View.VISIBLE);

B. Manually add children. Use the same xml as you use now and add in code you can add or delete children:

yourRelativeLayout.removeAllViews();
yourRelativeLayout.addView(viewToInclude);

Offtopic:

You don't need to write xmlns:android param in RelativeLayout. Just for the most top tag in layout file.

Share:
40,133
UurYsr
Author by

UurYsr

Updated on July 21, 2021

Comments

  • UurYsr
    UurYsr almost 3 years

    I included second layout to first layout like this:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:layout_gravity="clip_horizontal"
        android:layout_alignParentLeft="true" 
        android:id="@+id/rlMenu"
        >
    
        <Button
            android:id="@+id/bMusteriler"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Musteriler"
            android:textSize="45dp"
            android:layout_alignParentLeft="true"
             />
    
    </RelativeLayout>
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_toRightOf="@id/rlEkranlar"
         >
    
        <include
            android:id="@+id/include1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            layout="@layout/ikinci" />
    
    </RelativeLayout>
    </RelativeLayout>
    

    Problem is how can I change included layout when clicked a button(on java code)?