Androidで別のレイアウトを最初のレイアウトに膨らませる方法を探しています。どうすればいいですか?以下は2つのXMLファイルです。 1つ目はメインレイアウト、2つ目は最初に拡張したいレイアウトです。
この方法を使用して後で他のレイアウトをワイヤーフレームに膨らませるので、レイアウトを含めることはできません。
また、 http://Pastebin.com/wjZ4s1cs にコードを記述してください。stackoverflowはXMLを好まないためです。
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="#ff000000"
>
<TextView
Android:id="@+id/headerMenuText"
Android:text="@string/main_menu_title"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:textSize="16pt"
Android:paddingTop="10px"
Android:paddingBottom="10px"
Android:gravity="center"
>
</TextView>
<TableLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_y="100dip"
Android:gravity="center"
Android:layout_gravity="center"
>
<TableRow
Android:gravity="center"
Android:layout_gravity="center">
<ImageView
Android:id="@+id/menuItem1"
Android:layout_height="101dip"
Android:layout_width="89dip"
Android:src="@drawable/icon_settings"
></ImageView>
<ImageView
Android:id="@+id/menuItem2"
Android:layout_height="101dip"
Android:layout_width="89dip"
Android:src="@drawable/icon_system_restart"
></ImageView>
<ImageView
Android:id="@+id/menuItem3"
Android:layout_height="101dip"
Android:layout_width="89dip"
Android:src="@drawable/icon_game_history"
></ImageView>
<ImageView
Android:id="@+id/menuItem4"
Android:layout_height="101dip"
Android:layout_width="89dip"
Android:src="@drawable/icon_game_correction"
></ImageView>
<ImageView
Android:id="@+id/menuItem5"
Android:layout_height="101dip"
Android:layout_width="89dip"
Android:src="@drawable/icon_game_other"
></ImageView>
</TableRow>
<TableRow Android:gravity="center">
<TextView
Android:id="@+id/menuItemText1"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="@string/main_menu_item_text_1"
Android:layout_gravity="center"
Android:gravity="center"
></TextView>
<TextView
Android:id="@+id/menuItemText2"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="@string/main_menu_item_text_2"
Android:layout_gravity="center"
Android:gravity="center"
></TextView>
<TextView
Android:id="@+id/menuItemText3"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="@string/main_menu_item_text_3"
Android:layout_gravity="center"
Android:gravity="center"
></TextView>
<TextView
Android:id="@+id/menuItemText4"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="@string/main_menu_item_text_4"
Android:layout_gravity="center"
Android:gravity="center"
></TextView>
<TextView
Android:id="@+id/menuItemText5"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="@string/main_menu_item_text_5"
Android:layout_gravity="center"
Android:gravity="center"
></TextView>
</TableRow>
</TableLayout>
<View or layout
Android:id="@+id/screen_layout_bottom_menu"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
>
</View or layout>
</AbsoluteLayout>
2番目のレイアウト
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/screen_bottom_menu"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
>
<TableLayout
Android:id="@+id/screen_bottom_menu_table"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
>
<TableRow>
<ImageView
Android:id="@+id/screen_bottom_menu_button_back"
Android:src="@drawable/back">
</ImageView>
<ImageView
Android:id="@+id/screen_bottom_menu_button_ok"
Android:src="@drawable/checkmark">
</ImageView>
<ImageView
Android:id="@+id/screen_bottom_menu_button_cancel"
Android:src="@drawable/xmark">
</ImageView>
<ImageView
Android:id="@+id/screen_bottom_menu_button_key_toggle"
Android:src="@drawable/lock">
</ImageView>
</TableRow>
</TableLayout>
</LinearLayout>
ViewStub
はありますが、一度も使用したことがなく、2回以上使用することはできないと思います。
メニューレイアウトを膨らませて、メインレイアウトにアタッチできます。
AbsoluteLayout mainLayout = (AbsoluteLayout) findViewById(R.id.your_main_layout);
LayoutInflater inflater =
(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
次に、変更したい場合は削除できます。
mainLayout.removeView(menuLayout);
同じように別のものを追加します。
これは、レイアウトを親レイアウトの最後の子として追加するために機能します。たとえば、1番目の位置に追加したい場合は、レイアウトを親にアタッチせずにレイアウトを拡張でき(false
を最後の引数として使用)、インデックスを指定して手動で追加します。
mainLayout.addView(menuLayout, 0);
「後でレイアウトをインクルードすることはできません。この方法を使用して他のレイアウトをワイヤーフレームにインフレートするため、後でレイアウトを含めることはできません」ということを本当に理解したかはわかりません。ただし、2番目のレイアウトを他のさまざまなレイアウトに何度も配置する必要がある場合は、これらの他のレイアウトで<include layout="@layout/the_second_layout" />
を使用します。