2014-01-17 78 views
1

在所有佈局上我都有一個頁眉和頁腳,如何在運行時更改佈局之間的佈局?在Android的所有佈局中添加保持頁眉和頁腳常見的子頁面佈局

main_latout.xml-

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<include 
    android:id="@+id/header" 
    layout="@layout/mytask_header" 
    android:layout_width="fill_parent" 
    android:layout_height="60dp" 
    android:layout_alignParentTop="true"/> 

<include 
    android:id="@+id/footer" 
    layout="@layout/mytask_footer_ads" 
    android:layout_width="fill_parent" 
    android:layout_height="60dp" 
    android:layout_alignParentBottom="true"/> 

<RelativeLayout 
    android:id="@+id/common_place_for_xml" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/header" 
    android:layout_above="@id/footer" 
    android:background="@android:color/darker_gray"> 

</RelativeLayout> 

</RelativeLayout> 

我想更改RelativeLayout其他佈局ID common_place_for_xml? 我是新手?請幫忙。

+0

這似乎是一個使用片段的完美研究案例。 –

+0

閱讀關於片段在這裏http://developer.android.com/guide/components/fragments.html – pyus13

+0

片段可以幫助你很大的時間! –

回答

0

不知道我是否明白你想要什麼,但我會盡力幫忙。

嘗試給你的外部RelativeLayout一個id,比如「parentLayout」,以及另一個名爲newLayout的XML文件,它將替換你的「common_place_for_xml」佈局。

然後在運行時嘗試:

RelativeLayout parentLayout = findViewById(R.id.parentLayout); 
RelativeLayout childLayout = parentLayout.findViewById(R.id.common_place_for_xml); 
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) childLayout.getLayoutParams(); 
int index = parentLayout.indexOfChild(childLayout); 
parentLayout.removeView(childLayout); 
RelativeLayout newLayout = findViewById(R.id.newLayout); 
parentLayout.addView(newLayout, index); 
newLayout.setLayoutParams(params); 
0

您可以在視圖添加到運行時的相對佈局。下面是一個示例:

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.common_place_for_xml); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
Button dummy = new Button(this); 
dummy.setText("Hello"); 
dummy.setLayoutParams(params); 
relativeLayout.addView(dummy);