2010-07-09 17 views
16

Quiero crear una actividad con una barra de título en la parte superior y una barra de navegación en la parte inferior. Usé include para incluir el diseño de la barra de título y el diseño de la barra de navegación en el diseño principal, como puede ver a continuación. El resultado es que tanto la barra de título como la barra de navegación van a la parte superior de la pantalla. ¿Podría alguien decirme por qué? ¡Gracias!¿Qué pasa con mi inclusión en RelativeLayout?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/home_widget" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background"> 

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

    <include android:id="@+id/navigation_bar" layout="@layout/navigation_bar" 
     android:layout_alignParentBottom="true"/> 
</RelativeLayout> 

[Editar] no he encontrado la causa raíz. Pero los siguientes trabajos:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/home_widget" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background"> 

<RelativeLayout android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:id="@+id/title_bar" > 

    <include layout="@layout/title_bar" /> 
</RelativeLayout> 

<RelativeLayout android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:id="@+id/navigation_bar" > 

    <include layout="@layout/navigation_bar" /> 
</RelativeLayout> 
+0

usted está en un RelativeLayout, creo que se le olvidó androide: layout_below = "@ id/title_bar" para su barra de navegación – Sephy

+1

Por favor, actualice su pregunta para mostrar los contenidos de 'res/layout/title_bar .xml' y 'res/layout/navigation_bar.xml', luego @ me atrás. – CommonsWare

Respuesta

0

No tiene nada que llenar el espacio entre la barra superior e inferior por su aspecto.

Como un lado no, suelo usar LinearLayout en su lugar y uso el atributo layout_weight de la siguiente manera;

title_bar & navigation_bar obtener layout_weight = "0" y el contenido entre los dos obtiene layout_weight = "1". Esto le dice al administrador de diseño que expanda el contenido para llenar el espacio entre los dos si su diseño lineal es;

title_bar contenido navigation_bar

44

Con el fin de anular los atributos de la disposición que está incluida, también debe anular tanto el ancho de la disposición y la altura de diseño. Si ambas configuraciones no son anuladas, cualquier otro cambio de diseño que intente será ignorado.

Su diseño anterior

<include android:id="@+id/title_bar" layout="@layout/title_bar" 
    android:layout_alignParentTop="true" 
/> 
<include android:id="@+id/navigation_bar" layout="@layout/navigation_bar" 
    android:layout_alignParentBottom="true"/> 

en realidad debería estar con un contenido de envoltura o relleno de los padres, según corresponda.

<include android:id="@+id/navigation_bar" layout="@layout/navigation_bar" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true"/> 
+0

uggh tan tonto, volviendo a declarar layout_width y layout_height en el diseño que hace uso del include. Sin embargo, funciona –

+0

wow, no lo sabía. gran consejo. mi inclusión no estaba posicionando en un diseño relativo y establecer el ancho y la altura hace que respete el flujo de diseño. gracias – speedynomads

+1

esta debería ser la respuesta aceptada – d370urn3ur