web-dev-qa-db-fra.com

Android RecyclerView dans ConstraintLayout ne défile pas

J'ai un recyclerView à l'intérieur d'une disposition de contraintes et je ne peux pas le faire défiler, la liste continue juste en dessous de l'écran sans possibilité de défilement. Si je transforme la disposition en disposition relative, le défilement fonctionne correctement.

comment puis-je le faire défiler?

le XML suivant montre ma mise en page, la vue du recycleur est en bas. la mise en page a une image et une description en haut de l'écran. cette configuration d'écran occupe 30% de l'écran. suivi d'un séparateur et de la vue du recycleur qui devraient occuper le reste de l'écran et qui ne peuvent pas défiler

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/gradient_top">

   <Android.support.v7.widget.AppCompatImageView
        Android:id="@+id/imageViewLock"
        Android:layout_width="80dp"
        Android:layout_height="80dp"
        Android:layout_marginBottom="10dp"
        Android:layout_marginTop="16dp"
        app:layout_constraintBottom_toTopOf="@+id/textViewPermissionsTitle"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_phone_lock"/>

    <TextView
        Android:id="@+id/textViewPermissionsTitle"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="8dp"
        Android:gravity="center"
        Android:paddingLeft="24dp"
        Android:paddingRight="24dp"
        Android:text="@string/allow_permissions"
        Android:textColor="@color/white"
        Android:textSize="@dimen/description_text_size"
        app:layout_constraintBottom_toTopOf="@+id/guideline1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

    <Android.support.constraint.Guideline
        Android:id="@+id/guideline1"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.3"/>


    <View
        Android:id="@+id/viewSeparator"
        Android:layout_width="match_parent"
        Android:layout_height="0.7dp"
        Android:layout_marginTop="10dp"
        Android:background="@color/bright_blue"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline1"/>

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/recyclerViewPermissions"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:scrollbarSize="1dp"
        Android:scrollbarThumbVertical="@color/white"
        Android:scrollbars="vertical"
        app:layout_constraintTop_toBottomOf="@+id/viewSeparator" />


</Android.support.constraint.ConstraintLayout>
22
BennyP

Cela a fonctionné pour moi:

<?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=".MainActivity">

    <androidx.constraintlayout.widget.ConstraintLayout
        Android:id="@+id/constraintLayout2"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        ..... other controls ....

    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.recyclerview.widget.RecyclerView
        Android:id="@+id/recyclerView"
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_marginStart="1dp"
        Android:layout_marginEnd="1dp"
        Android:layout_marginBottom="1dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/constraintLayout2" />
</androidx.constraintlayout.widget.ConstraintLayout>
0
live-love