为啥我的 ListView 项目重叠而不是滚动?

Posted

技术标签:

【中文标题】为啥我的 ListView 项目重叠而不是滚动?【英文标题】:Why do my ListView items overlap instead of scroll?为什么我的 ListView 项目重叠而不是滚动? 【发布时间】:2020-12-09 22:01:26 【问题描述】:

据我所知,ListView 应该可以滚动而无需任何调整,而我的项目只是在 listview 边界上不断重叠。我试过了:

android:nestedScrollingEnabled="true" 添加到子列表视图 在列表视图上设置线性布局并将布局权重设置为 1 在列表视图之上添加 ScrollView

但没有任何效果。

这是我的布局

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".ListOfChatsActivity">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/picture"
        android:layout_
        android:layout_
        app:layout_constraintBottom_toTopOf="@+id/guideline3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:src="@drawable/slika1" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline3"
        android:layout_
        android:layout_
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="126dp" />

    <TextView
        android:id="@+id/name"
        android:layout_
        android:layout_
        android:layout_margin="15dp"
        android:text="@string/name"
        android:textColor="@color/logoBlue"
        android:textSize="22sp"
        app:layout_constraintEnd_toEndOf="@+id/picture"
        app:layout_constraintStart_toStartOf="@+id/picture"
        app:layout_constraintTop_toBottomOf="@+id/picture" />

    <TextView
        android:id="@+id/email"
        android:layout_
        android:layout_
        android:layout_margin="10dp"
        android:text="@string/email"
        android:textColor="@color/logoBlue"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="@+id/name"
        app:layout_constraintStart_toStartOf="@+id/name"
        app:layout_constraintTop_toBottomOf="@+id/name" />

    <TextView
        android:id="@+id/phone"
        android:layout_
        android:layout_
        android:layout_marginTop="10dp"
        android:text="@string/phone"
        android:textColor="@color/logoBlue"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="@+id/email"
        app:layout_constraintStart_toStartOf="@+id/email"
        app:layout_constraintTop_toBottomOf="@+id/email" />

    <TextView
        android:id="@+id/tptp"
        android:layout_
        android:layout_
        android:background="@color/logoBlue"
        android:text="@string/contacts"
        android:textAlignment="center"
        android:textColor="#fff"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline3" />

    <ListView
        android:id="@+id/list"
        android:layout_
        android:layout_
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tptp"
        />

</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

【参考方案1】:

你应该为你的列表视图设置一个高度而不是 wrap_content,否则如果行太多并且它们可能重叠,你的列表视图会想让你的根布局可滚动。

【讨论】:

经过一番调整后,它起作用了。虽然只是为了检查,但它现在不是针对一种屏幕尺寸固定的吗? 如果你放了一些 dp 值,是的,它只适用于一个屏幕。您应该在 ConstraintLayout 根或其他设计应用程序中使用百分比值。

以上是关于为啥我的 ListView 项目重叠而不是滚动?的主要内容,如果未能解决你的问题,请参考以下文章

ListView 滚动 - 一个一个

在 listView 上加载更多项目而不是 n+2 项目

为啥我的 ListView 使我的应用程序崩溃而不是列出我的条目?

为啥我的 UITableView 单元格在滚动时重叠?

为啥我的 ListView 显示在一个片段中而不是另一个片段中?

ScrollView 中的 ListViews 与我的 TextViews 重叠