res/layout/xxxx.xmlで定義された画面の中の一部分を動的に差し替えるとこが出来る。
たとえば、ヘッダーとフッター部分はそのままで、ボタンを押されたら内容の部分だけ切り替えて表示するという感じ。
LayoutInflaterクラスのinflaterメソッドを使う。
http://developer.android.com/reference/android/view/LayoutInflater.html
まずは、差し替えられる側のxmlを作る。
以下の例ではタイトル、コンテンツ部分、ボタンで構成れていて、ボタンが押された時に、コンテンツ部分を別のものへ差し替える事を想定している。
例)res/layout/test.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/test_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="タイトル" /> <LinearLayout android:id="@+id/test_contents" android:layout_width="500dip" android:layout_height="300dip" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="1ページ目です" /> </LinearLayout> <Button android:id="@+id/test_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="NEXT" /> </LinearLayout>
差し替える側のxmlも作る。
こちらはコンテンツ部分だけを記述する。
例)res/layout/test_sub.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/test_contents" android:layout_width="500dip" android:layout_height="300dip" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="2ページ目です" /> </LinearLayout>
ボタンが押された時にページを差し替える処理をする。
public void onClick(View v) { // コンテンツ部分のLayoutを取ってくる LinearLayout layout = (LinearLayout)findViewById(R.id.test_contents); // 内容を全部消す layout.removeAllViews(); // test_sub.xmlに変更する getLayoutInflater().inflate(R.layout.test_sub, layout); }
コメントをお書きください