Кнопки под ListView не фиксируются в нижней части экрана, когда ListView пуст - PullRequest
0 голосов
/ 15 сентября 2010

У меня есть макет, который содержит ListView несколько кнопок под ним.

Я хочу, чтобы кнопки были прикреплены к нижней части экрана.

Когда в ListView есть несколько элементов (больше, чем то, что умещается на экране), код работает правильно, и кнопки появляются в нижней части экрана.

Однако, когда ListView пуст или не требует прокрутки, кнопки появляются на экране (они не остаются фиксированными внизу).

Вот макет (некоторые детали опущены, но я могу добавить их при необходимости):

<LinearLayout>
  <LinearLayout 
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical" >
   <TextView />
   <ListView 
     android:width="fill_parent"
     android:height="wrap_parent"
     android:layout_weight="1" />
  </LinearLayout>
  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal|bottom" 
    android:orientation="horizontal"
    android:layout_weight="0" />
    <Button 
      android:layout_weight="1" />
    <Button 
      android:layout_weight="1" />
  </LinearLayout>
 </LinearLayout>

Я ожидал установить «гравитацию» второго LinearLayout на «низ», чтобы кнопки были зафиксированы в нижней части экрана, но в указанном случае это не работает.

Есть идеи?

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Вы установили layout_height вашего верхнего LinearLayout равным wrap_content. Это означает, что оно будет сокращаться при уменьшении его содержимого. Попробуйте вместо этого установить значение fill_parent. Или укажите для layout_weight значение 1.

0 голосов
/ 04 мая 2014

Один из вариантов - создать TextView, который будет отображаться вместо списка, когда он пуст.Вы делаете это с listView.setEmptyView(emptyView)

Затем установите для layout_weight этого TextView тот же вес, что и для вашего списка.Поэтому, когда listview пуст, его место будет занимать emptyView, а кнопки останутся фиксированными внизу.Также установите для вашего emptyView значение android:gravity="center".

Другой параметр:

  1. В вертикальном RelativeLayout добавьте к макету свойство кнопок android: layout_alignParentBottom = "true".
  2. Все вещи с listView поместите внутрь LinearLayout и добавьте в него android: layout_above = "@ + id / buttons_layout".Вот и все.Элементы внутри LinearLayout будут занимать свое место в зависимости от веса, но весь макет не будет выходить за пределы кнопок.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...