问题
i have a problem. I develop android application.
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) ?
Sorry for my English. Thanks.
回答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);
}
});
回答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.
回答3:
Have you tried to get the instance of the current view of the xml you have included the other xml and use findViewById()
. View v is the first layout and against this view you use .findViewById()
来源:https://stackoverflow.com/questions/8589880/how-can-i-change-included-xml-layout-to-another-layout-on-java-code