Подтвердить что ты не робот

Что случилось с моим включением в RelativeLayout?

Я хочу создать действие с заголовком сверху и панель навигации внизу. Я использовал include для включения макета панели заголовка и макета панели навигации в основной макет, как вы можете видеть ниже. В результате обе строки заголовка и панель навигации перейдут в верхнюю часть экрана. Может ли кто-нибудь сказать мне, почему? Спасибо!

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

[Изменить] Я не нашел первопричины. Но следующие работы:

<?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>
4b9b3361

Ответ 1

Чтобы переопределить атрибуты используемого макета, вы также должны переопределить как ширину макета, так и высоту макета. Если обе эти настройки не будут переопределены, любые другие изменения макета, которые вы попытаетесь, будут проигнорированы.

Ваш план выше

<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"/>

На самом деле должно быть с содержимым обертки или заполнить родительский элемент, если это необходимо.

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

Ответ 2

У вас нет ничего, чтобы заполнить пространство между верхней и нижней панелью его внешностью.

В качестве стороны я предпочитаю использовать LinearLayout вместо этого и использовать атрибут layout_weight следующим образом:

title_bar и navigation_bar получают layout_weight = "0", а содержимое между ними получает layout_weight = "1". Это говорит менеджеру макета развернуть содержимое, чтобы заполнить пространство между ними, если ваш линейный макет:

title_bar содержание navigation_bar