Почему мои элементы ListView перекрываются вместо прокрутки?

#android #android-listview #android-scrollview

#Android #android-listview #android-scrollview

Вопрос:

Насколько мне известно, ListView должен прокручиваться без каких-либо настроек, в то время как мои элементы просто продолжают перекрываться поверх элементов listview. Я пытался:

  • добавление android:nestedScrollingEnabled=»true» в дочерний элемент listview
  • установка linearlayout поверх listview и установка веса макета равным 1
  • добавление ScrollView поверх listview

но ничего не сработало.

Вот мой макет

     <?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_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ListOfChatsActivity">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@ id/picture"
        android:layout_width="120dp"
        android:layout_height="120dp"
        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_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="126dp" />

    <TextView
        android:id="@ id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        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_width="wrap_content"
        android:layout_height="wrap_content"
        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_width="wrap_content"
        android:layout_height="wrap_content"
        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_width="match_parent"
        android:layout_height="41dp"
        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_width="match_parent"
        android:layout_height="wrap_content"
        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:

Вы должны установить высоту для вашего listview, отличную от wrap_content, иначе ваш listview захочет сделать ваш корневой макет прокручиваемым, если строк слишком много и они могут перекрываться.

Комментарии:

1. После небольшой настройки это сработало. Хотя, просто чтобы проверить, не исправлено ли это теперь для одного размера экрана?

2. Если вы зададите некоторое значение dp, да, это только для одного экрана. Вы должны использовать процентные значения с корнями ConstraintLayout или каким-либо другим приложением для проектирования.