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" >
Selon le doc
Avec la version 23.2.0 , il existe une nouvelle fonctionnalité intéressante pour l'API LayoutManager: mesure automatique !
Cela permet à unRecyclerView
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"
Vous devez faire en sorte que Recyclerview et les hauteurs de disposition des articles enveloppent le contenu.
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);
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>