2013-10-26 84 views
0

爲什麼這些:有多個定位佈局包括

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

    <include 
     layout="@layout/myCustomTitleBar" 
     android:id="@+id/titlebar" /> 

    <include 
     layout="@layout/myCustomToolBar" 
     android:id="@+id/toolbar" 
     android:layout_below="@id/titlebar" /> 

    <com.myname.myapp.MyCustomView 
     android:id="@+id/myView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/toolbar" 
    /> 

</RelativeLayout> 

不工作?
兩個include彼此堆疊/重疊。 (layout_below不工作)
兩個include s - myCustomTitleBarmyCustomToolBar - 均爲RelativeLayout s。
我做錯了什麼?

期望的結果:

illustration

回答

3

根據您的應用程序的草圖,你不應該使用RelativeLayout爲根。 RelativeLayout正好用於覆蓋項目。你必須使用LinearLayout。當然,LinearLayout組的每個項目都必須具有相應的layout_width/layout_height值。

根:

<?xml version="1.0" encoding="utf-8"?> 

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

    <include layout="@layout/relative_sample_a"/> 

    <include layout="@layout/relative_sample_b"/> 

    <RelativeLayout android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:background="#991022"/> 

</LinearLayout> 

relative_sample_a.xml

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="#AACC33"> 

    <Button android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="10dp" 
      android:text="ButtonA"/> 

    <Button android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="10dp" 
      android:layout_alignParentRight="true" 
      android:text="ButtonB"/> 


</RelativeLayout> 

relative_sample_b.xml

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="#DDBB00"> 

    <Button android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="10dp" 
      android:layout_centerInParent="true" 
      android:text="ButtonC"/> 


</RelativeLayout> 

enter image description here

1

試加android:layout_alignParentTop="true"到標題欄

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

    <include 
     layout="@layout/myCustomTitleBar" 
     android:id="@+id/titlebar" 
     android:layout_alignParentTop="true" /> 

    <include 
     layout="@layout/myCustomToolBar" 
     android:id="@+id/toolbar" 
     android:layout_below="@id/titlebar" /> 

    <com.myname.myapp.MyCustomView 
     android:id="@+id/myView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/toolbar" 
    /> 

</RelativeLayout>