Я пытаюсь сделать выбор ListActivity, похожий на тот, который используется для добавления ярлыков на экраны запуска. Я свернул свои собственные верхние и нижние колонтитулы, которые я бы хотел, чтобы они были «липкими» в верхней и нижней части окна при отображении на экране. Чтобы сделать это, я использую RelativeLayout с заголовком, установленным на стыковку сверху, нижний колонтитул установлен на стыковку снизу, а список установлен так, чтобы идти ниже заголовка и над нижним колонтитулом. С точки зрения общего макета действия, это рендеринг, как я и ожидал. Верхний колонтитул липкий вверху, нижний колонтитул липкий внизу, а список прокручивается между ними.
Одна странная вещь произошла, когда я переключился на RelativeLayout в качестве своего корня. Пожалуйста, смотрите следующий скриншот:
Я хочу, чтобы высота моей Деятельности была wrap_content
, чтобы форма была такой же высокой, как и содержимое, отображаемое в ней, но как только я переключился на RelativeLayout, она, по-видимому, эффективно отображает Активность как fill_parent
, занимая весь экран, хотя содержание этого не гарантирует. Обратите внимание, что для заполнения экрана недостаточно элементов списка, который со стилем fill_parent
оставляет кучу пробелов между концом списка и нижним колонтитулом. Я устанавливал свой рост с помощью стилей - который отлично работал с LinearLayout, но теперь, похоже, игнорируется Поэтому я попытался жестко запрограммировать высоту непосредственно в RelativeLayout, но он все еще не работает и по-прежнему отображается как fill_parent
.
Вот мой код компоновки:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/GroupsList"
android:layout_height="wrap_content">
<FrameLayout android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/hdrGroups"
android:layout_alignParentTop="true">
<include layout="@layout/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</include>
</FrameLayout>
<FrameLayout style="@style/MyFooter"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_alignParentBottom="true"
android:id="@+id/ftrGroups">
<ImageView style="@style/CloseButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/add"
android:id="@+id/imgGroupsAdd"
android:clickable="true">
</ImageView>
</FrameLayout>
<ListView android:divider="#9f9f9f"
android:id="@+id/android:list"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_below="@id/hdrGroups"
android:layout_above="@id/ftrGroups">
</ListView>
<TextView android:text="@string/browser_no_groups"
style="@style/ListedItemB"
android:id="@+id/android:empty"
android:layout_height="wrap_content"
android:layout_above="@id/ftrGroups"
android:layout_below="@id/hdrGroups"
android:layout_width="fill_parent">
</TextView>
</RelativeLayout>
Вся разметка выполняется через XML, ... Я не делаю разметку в коде.
Как я могу получить липкий верхний и нижний колонтитулы, при этом активность в целом ведет себя в режиме wrap_content
для своей высоты? Есть ли какой-то другой способ, которым я должен идти об этом вместо RelativeLayout?