当ListView为空时,ListView下方的按钮不会固定在屏幕底部

时间:2010-09-15 19:36:46

标签: android listview button

我有一个Layout,其中包含一个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 个答案:

答案 0 :(得分:1)

您将顶部LinearLayout的layout_height设置为wrap_content。这意味着它会随着内容的缩小而缩小。尝试将其设置为fill_parent。或者,给它一个layout_weight为1。

答案 1 :(得分:0)

其中一个选项是创建TextView,当它为空时将显示而不是listview。 您可以使用listView.setEmptyView(emptyView)

执行此操作

然后将此TextView的layout_weight设置为与listview相同的权重。所以当listview为空时,它的位置将由emptyView占用,按钮将保持固定在底部。 同时将emptyView设置为android:gravity="center"

其他选择:

  1. 在垂直RelativeLayout中添加到按钮属性android的布局:layout_alignParentBottom =“true”。
  2. 使用listView的所有内容放入LinearLayout并添加到它android:layout_above =“@ + id / buttons_layout”。 而已。 LinearLayout中的元素将根据重量取代它们的位置,但整个布局不会超出按钮。