【问题标题】:ListView Taking Up All of Screen SpaceListView 占用所有屏幕空间
【发布时间】:2015-05-03 12:18:05
【问题描述】:

我正在尝试设计一个底部有一个 listView 和两个按钮的布局。

布局 XML 看起来像这样 -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical"
 android:background="#ffffff">
      <ListView
          android:id="@+id/list"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:drawSelectorOnTop="true">

    </ListView>

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    <Button
         android:id="@+id/previous"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:text="Previous"/>
    <Button
         android:id="@+id/next"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:text="Next"/>     
 </LinearLayout></LinearLayout>

但是ListView占据了所有的屏幕空间,并且按钮不显示。

listview中的item是动态生成的,使用的adapter是ArrayAdapter。

作为 Android 的 simple_list_item_1.xml 的复制粘贴的单独 xml 文件被传递给 ArrayAdapter,因此显示的文本为黑色,而不是浅灰色。

有什么解决方法可以让列表在底部显示按钮吗?

【问题讨论】:

    标签: android listview android-listview


    【解决方案1】:

    使用相对布局

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:background="#ffffff">
         <ListView
              android:id="@+id/list"
              android:layout_alignParentTop="true"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_above="@+id/btnBar"
              android:drawSelectorOnTop="true"/>
         <LinearLayout 
            android:id="@+id/btnBar"
            android:layout_alignParentBottom="true"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
             <Button
                 android:id="@+id/previous"
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
                 android:text="Previous"/>
             <Button
                 android:id="@+id/next"
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
                 android:text="Next"/>     
        </LinearLayout>
    </RelativeLayout>
    

    重要的行是RelativeLayout 作为您的基础ViewGroup,这告诉您的ListView 保持在底部栏上方:

        android:layout_above="@+id/btnBar"
    

    这会告诉您的按钮栏LinearLayout 固定到屏幕底部:

        android:layout_alignParentBottom="true"
    

    此外,如果您希望按钮占用 Equal Space 使用:

       <LinearLayout 
            android:id="@+id/btnBar"
            android:layout_alignParentBottom="true"
            android:layout_width="fill_parent"
            android:weightSum="2"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
             <Button
                 android:id="@+id/previous"
                 android:layout_height="wrap_content"
                 android:layout_width="0dp"
                 android:layout_weight="1"
                 android:text="Previous"/>
             <Button
                 android:id="@+id/next"
                 android:layout_height="wrap_content"
                 android:layout_width="0dp"
                 android:layout_weight="1"
                 android:text="Next"/>     
        </LinearLayout>
    

    【讨论】:

    • 成功了,谢谢。必须在 ListView 中添加 android:layout_alignParentTop="true",因为元素很少的列表粘在屏幕底部。
    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多