web-dev-qa-db-fra.com

Éléments RecyclerView avec un grand espace vide après le 23.2.0

Après la mise à jour vers v23.2. dans mon RecyclerView J'ai des éléments avec un énorme espace vertical vide, entre les éléments.

La disposition de mon article est très simple:

 <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:layout_width="match_parent"
       Android:layout_height="match_parent"                                    
       Android:orientation="vertical" >
42

Selon le doc

Avec la version 23.2.0 , il existe une nouvelle fonctionnalité intéressante pour l'API LayoutManager: mesure automatique !
Cela permet à un RecyclerView de se redimensionner en fonction de la taille de son contenu. Cela signifie que des scénarios auparavant indisponibles, tels que l'utilisation de WRAP_CONTENT pour une dimension de RecyclerView, sont désormais possibles.
Vous constaterez que tous les LayoutManagers intégrés prennent désormais en charge la mesure automatique.

En raison de cette modification, assurez-vous de vérifier les paramètres de mise en page de vos vues d'élément: paramètres de mise en page précédemment ignorés (comme MATCH_PARENT dans le sens du défilement) sera désormais pleinement respecté .

Dans la disposition de votre article, vous devez modifier:

Android:layout_height="match_parent"

avec

Android:layout_height="wrap_content" 
126

Vous devez faire en sorte que Recyclerview et les hauteurs de disposition des articles enveloppent le contenu.

14
Göksel Güren

Dans mon cas, j'avais apporté les nouvelles modifications wrap_content mais il y avait toujours un écart qui se manifestait pendant onMove ou onSwipe. J'ai résolu cela en ajoutant ce code:

mRecyclerView.getLayoutManager().setMeasurementCacheEnabled(false);
6
Lee Hounshell

C'est du travail pour moi.

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
xmlns:app="http://schemas.Android.com/apk/res-auto">

<Android.support.v7.widget.CardView
    Android:layout_width="fill_parent"
    Android:layout_height="100dp"
    Android:elevation="7dp"
    app:cardCornerRadius="7dp"
    app:cardMaxElevation="7dp"
    app:contentPadding="7dp"
    Android:layout_margin="5dp"
    >

        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent">
    <TextView
        Android:id="@+id/tv_allfeedbacks_title"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="5dp"
        Android:layout_marginLeft="5dp"
        Android:textSize="14dp"
        Android:textStyle="bold"
        />
    <TextView
        Android:id="@+id/tv_allfeedback_date"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentRight="true"
        Android:layout_marginRight="5dp"
        Android:layout_marginTop="5dp"
        />
    <TextView
        Android:id="@+id/tv_allfeedbacks_comment"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/tv_allfeedbacks_title"
        Android:layout_marginTop="5dp"
        Android:layout_marginLeft="5dp"
        />
        <TextView
            Android:id="@+id/tv_allfeedbacks_username"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentBottom="true"
            Android:layout_margin="5dp"
            />
        <RatingBar
            Android:id="@+id/ratingbar_allfeedbacks"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentBottom="true"
            Android:layout_alignParentRight="true"
            Android:numStars="5"
            Android:layout_margin="5dp"
            style="?attr/ratingBarStyleSmall"
            />
        </RelativeLayout>

</Android.support.v7.widget.CardView>
3
Basant