28

次のように、最初のレイアウトに 2 番目のレイアウトを含めました。

<?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>

問題は、ボタンをクリックしたときに含まれるレイアウトを変更するにはどうすればよいですか(Javaコードで)?

4

3 に答える 3

60

私はあなたの声明のViewFlipper中で提案します。このようにしてみてください:RelativeLayoutinclude

<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>

以下のように ViewFlipper にアクセスします。最初に最初のレイアウトが出力されます。

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

ボタンの onClickListener の場合:

button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                vf.setDisplayedChild(1);
            }
        });
于 2011-12-23T04:48:25.287 に答える
24

コードでレイアウトを変更するには、次の 2 つの方法があります。

A. 可視性を変更します。xml に 2 つの異なるレイアウトを含めます。

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

コードではこれを使用します:

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

B. 子を手動で追加します。現在使用しているのと同じ xml を使用し、子を追加または削除できるコードを追加します。

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

オフトピック:

xmlns:androidRelativeLayout に paramを記述する必要はありません。レイアウト ファイルの一番上のタグのみ。

于 2011-12-23T04:45:16.063 に答える
0

他の xml を含めて使用した xml の現在のビューのインスタンスを取得しようとしましたかfindViewById()。ビュー v は最初のレイアウトであり、使用するこのビューに対して.findViewById()

于 2011-12-21T12:49:24.373 に答える