【问题标题】:Populating Listview causes the other element to partially hide填充 Listview 会导致其他元素部分隐藏
【发布时间】:2026-01-10 03:05:01
【问题描述】:

我是 android 布局的新手,在我的应用中遇到以下问题:

这是片段的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_margin="0dp">
<ListView
    android:id="@+id/listview_books_to_issue"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.87"

    />

<ImageView
    android:id="@+id/imageView_empylist"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.87"
    android:src="@drawable/ic_empty_flask"
    android:visibility="gone"/>
<View
    style="@style/Divider"/>

<Button
    android:id="@+id/add_newbook_upcoming_issues"
    android:layout_width="match_parent"
    android:text="New"
    android:paddingTop="5dp"
    android:layout_height="0dp"
    android:layout_weight="0.13"
    android:drawableTop="@drawable/ic_add"
    android:background="?android:attr/selectableItemBackground"/>

当 ListView(listview_books_to_issue) 为空时,我打开 ImageView(imageView_empylist) 的可见性,到目前为止,按钮 add_newbook_upcoming_issues 看起来不错,但是当列表视图被填充时,即使只有一个项目,按钮也会被隐藏部分在底部。

这是用于填充列表的项目的布局代码。

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textview_upcoming_issues_book_title"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.3"
        android:textAlignment="center"
        android:gravity="center_vertical"
        android:text="Title"/>

    <TextView
        android:id="@+id/textview_upcoming_issues_book_author"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.3"
        android:textAlignment="center"
        android:gravity="center_vertical"
        android:text="By:-Author"/>

    <TextView
        android:id="@+id/textview_to_issue_date"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.3"
        android:textAlignment="center"
        android:gravity="center_vertical"
        android:text="to be issued on"/>
    <TextView
        android:id="@+id/textview_upcoming_issues_book_no"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.1"
        android:visibility="gone"/>

</LinearLayout>

不知道是什么原因造成的,有什么帮助吗? 在此先感谢:)

PS:我使用权重而不是高度,以便我可以为项目设置固定的屏幕比例。如果这是导致问题的原因,请提及正确的处理方法。

EDIT在这里找到了解决方案Limit height of ListView on Android

【问题讨论】:

    标签: android android-layout listview


    【解决方案1】:

    在您的主要布局片段中,请使用RealativeLayout 替换LinearLayout。对于这些视图,您的 ListView 将是 layout_above

    【讨论】:

    • 它不适用于线性布局的任何特殊原因?
    • 当高度或宽度超过您设置的比例时,'layout_weight' 将不正确。