2011-12-21 8 views
21

私は問題があります。私はアンドロイドのアプリケーションを開発する。どうすればインクルードされたXMLレイアウトをJavaコードの別のレイアウトに変更できますか?

私はこのような最初のレイアウトに第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コード上)ボタンをクリックしたときに、レイアウトを含め変更することができる方法ですか?

私の英語のために申し訳ありません。おかげさまで

+0

は、新しいxmlファイルとアクティビティを作成し、意図を介して第2の呼び出し 当初は最初のレイアウトが出力されます。 –

+0

質問を変更してください。あまり明確ではありません。 –

+0

@ YugandharBabuボタンをクリックすると、layout = "@ layout/ikinci"をlayout = "@ layout/third_layout"に変更したいと思います。 – UurYsr

答えて

51

includeRelativeLayoutの中には、ViewFlipperがあります。次のようにしてください:

<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); 
      } 
     }); 
+0

ありがとうございました。 問題を修正しました=)) – UurYsr

+0

答えが得られたら、それに印を付けてください。あなたは歓迎バディです –

+0

私は、感謝したと思います。 – UurYsr

0

他のxmlを含めたxmlの現在のビューのインスタンスを取得しようとしましたか?findViewById()を使用しましたか?

A.変更の可視性:ビューVは、最初のレイアウトとあなたが.findViewById()

+0

私はこれを試しました: レイアウトL1 =(レイアウト)findViewById(R.id.layout1); 変換エラーがあります。ビューをレイアウトに変換できません。 私は間違ったsomethingsをしていますか? – UurYsr

+0

レイアウト?独自のSDKを作成している限り、SDKにはそのようなビューはありません。クラス名を正しく参照してください。 Like:LinearLayout、RelativeLayout、FrameLayout .... –

+0

私はこれを試してみます。おかげで – UurYsr

20

コードでレイアウトを変更する方法は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でのけん引異なるレイアウトを含めます。あなたが子供を追加または削除することができますあなたが今使用して同じXMLを使用してコードを追加:

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

Offtopicを:

あなたはRelativeLayoutにxmlns:androidのparamを記述する必要はありません。レイアウトファイルの一番上のタグだけです。

+0

ありがとう@ Jin35、私はあなたのソリューションを試して、それが修正されました。 – UurYsr

+3

Intellij 14はオートコンプリートオプションで「可視性」を提供していないので、私は混乱しました。 –

関連する問題