web-dev-qa-db-ja.com

Javaコードで、含まれているxmlレイアウトを別のレイアウトに変更するにはどうすればよいですか?

私は問題があります。 Androidアプリケーションを開発しています。

私はこのように最初のレイアウトに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コード)?)

私の英語でごめんなさい。ありがとう。

25
UurYsr

ViewFlipperステートメントのRelativeLayoutの内側にincludeをお勧めします。このようにしてみてください:

<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);
            }
        });
59
Yugandhar Babu

コードでレイアウトを変更するには、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);

オフトピック:

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

22
Jin35

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

0