2011-03-17 125 views
17

我正在尋找一種方法將另一個佈局充氣到android中的第一個佈局。如何做到這一點?這是兩個XML文件。第一個是主佈局,第二個是我想膨脹到第一個的佈局。將視圖/佈局充氣到另一個佈局?

我不能只包含佈局,因爲我將使用此方法將其他佈局充填到稍後的線框中。

代碼也在: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> 

二佈局

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

代碼格式:如果你想添加它,比方說,在第一個位置,你可以不將其連接到父(使用false去年ARG),並將其添加手動指定的指數虛增您的佈局亮點代碼行並按下「{}」按鈕,它將在每行的開頭添加4個空格 - >代碼格式化。 – bigstones 2011-03-17 16:39:45

+0

AbsoluteLayout已被棄用,因爲它不支持不同大小的屏幕。改爲使用LinearLayout或RelativeLayout。 – 2013-01-18 14:06:50

回答

32

ViewStub但我從來沒有使用它,我認爲它不能使用多次。

可以膨脹的菜單佈局,並將其連接到主要佈局:

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

並添加另一個以同樣的方式。

這將工作,因爲你想添加布局作爲父佈局的最後一個孩子。

mainLayout.addView(menuLayout, 0); 
+2

已清除。什麼是新的 ? – 2012-09-15 13:15:52

+0

@ jeet.chanchawat ViewStub似乎不推薦使用? – 2012-11-12 15:23:03

+1

'AbsoluteLayout'被取消 – 2012-12-19 07:06:07

6

我不知道我真的明白了你說的「我不能僅僅只包含佈局彪,我會用這種方法來擡高其他佈局成線稍後的框架。「 但是,如果您需要將第二個佈局多次放入各種其他佈局中,請在這些其他佈局中使用<include layout="@layout/the_second_layout" />

+0

我知道包括標籤,但我正在尋找動態地切換佈局,而不是基於佔位符。 – 2011-03-17 17:40:35