2011-03-17 90 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