Как создать фиксированный нижний колонтитул в макете Android? - PullRequest
32 голосов
/ 23 февраля 2010

Я использую следующий код для отображения кнопки внизу действия.

<RelativeLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" 
        android:layout_centerHorizontal="true" 
         >
    <Button android:id="@+id/btnGetMoreResults"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 

         android:text="Get more"
       />
       </RelativeLayout> 

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

любая помощь будет оценена.

Ответы [ 3 ]

100 голосов
/ 27 апреля 2011

Ответ, выбранный как правильный, неверен, кнопка скроет нижнюю часть списка. Правильный способ - сначала объявить кнопку и расположить список над кнопкой.

<Button android:id="@+id/btnGetMoreResults"
   android:layout_height="wrap_content" 
   android:layout_width="wrap_content"     
   android:text="Get more"
   android:layout_alignParentBottom="true"/>

<ListView 
   ...
   android:layout_above="@id/btnGetMoreResults"/>
24 голосов
/ 23 февраля 2010

Атрибут android:layout_alignParentBottom должен быть объявлен в элементе RelativeLayout, а не в самом RelativeLayout (если нет другого RelativeLayout в качестве родителя).

Вы должны сделать что-то подобное, с ListView внутри RelativeLayout также:

<RelativeLayout 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"         
 android:layout_centerHorizontal="true">
  <ListView ...>
  <Button android:id="@+id/btnGetMoreResults"
   android:layout_height="wrap_content" 
   android:layout_width="wrap_content"     
   android:text="Get more"
   android:layout_alignParentBottom="true" />
</RelativeLayout> 
8 голосов
/ 27 сентября 2013

Если у вас есть, например, все прокручиваемые элементы в ScrollView , вы должны сделать следующее:

<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"
        style="@style/rootElement"
    >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

            <!-- texts, buttons, images and anything that you want to scroll -->

        </ScrollView>

    <LinearLayout 
        android:orientation="vertical" 
        style="@style/footer"
        android:id="@+id/footer"            
            android:layout_alignParentBottom="true"
        >

    </LinearLayout>

</RelativeLayout>

Обратите внимание: если вы хотите, чтобы нижний колонтитул был зафиксирован, вам не следует помещать его в ScrollView, где будет размещаться прокручиваемый контент. Сделайте это потомком RelativeLayout и установите layout_alignParentBottom в true. Возможно, в этом случае вам потребуется добавить отступ в нижней части ScrollView (чтобы последний элемент не скрывался нижним колонтитулом).

Идея аналогична для элементов, отличных от ScrollView

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