1
votes

Les éléments Recyclerview ne s'affichent pas avec la même hauteur

Voici mon application où le problème existe

Je veux que mes articles correspondent à cette application

J'utilise un RecyclerView avec GridLayoutManager . Mon problème, comme vous le voyez dans l'image, est que les éléments de la grille ne sont pas de la même hauteur lorsque l'un des éléments a un texte plus long. Je charge les données depuis Firebase et je préviens l ' Adaptateur lorsque la liste contient les données. J'ai tout essayé mais je ne trouve pas de solution pour ajuster automatiquement les éléments comme la deuxième image jointe. Avez-vous de l'aide, s'il vous plaît?

Voici la mise en page de mon article recyclerview

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layoutDirection="rtl"
    >



    <android.support.v7.widget.CardView
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        app:cardCornerRadius="10dp"
        android:layout_margin="5dp"
        app:cardBackgroundColor="#fff"
        app:cardElevation="5dp"
        >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/cartoonImg"
                android:layout_width="match_parent"
                android:layout_height="120dp"
                android:scaleType="fitXY"
                app:imgUrl="@{cartoon.thumb}"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                tool:text="Cartoon Name"
                android:gravity="center"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginRight="2dp"
                android:layout_marginLeft="2dp"
                android:textColor="@color/colorPrimary"
                android:text="@{cartoon.title}" />

        </LinearLayout>

    </android.support.v7.widget.CardView>

</FrameLayout>


4 commentaires

Bonjour, bienvenue sur StackOverFlow. Veuillez fournir la mise en page de recyclerview item.xml


vous devez changer la hauteur de l'élément wrap_content à 100sp ou ce que vous avez aimé


J'ai ajouté la mise en page de mon article recyclerview ankuranurag2


Vishal Yadav Je veux un ajustement automatique et non une taille fixe.


4 Réponses :


0
votes

vous pouvez donner une hauteur statique à votre texte, de cette façon ce sera le même pour tous. Mais vous risquez de perdre votre texte là-dedans.


1 commentaires

Je le sais. C'est pourquoi j'ai besoin d'un ajustement automatique et non d'une hauteur fixe.



0
votes

Vous pouvez ajouter à votre TextView:

android: ellipsize = "start" android:maxLines="1

À partir de l'API 26, vous pouvez utiliser Autosizing TextView - consultez la documentation ici: https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview


0 commentaires

1
votes

Cela donnera exactement ce dont vous avez besoin

Essayez de remplacer votre TextView par ceci:

           <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                tool:text="Cartoon Name"
                android:gravity="center"
                android:minLines="2"
                android:maxLines="2"
                android:ellipsize="end"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginRight="2dp"
                android:layout_marginLeft="2dp"
                android:textColor="@color/colorPrimary"
                android:text="@{cartoon.title}" />


0 commentaires

0
votes

Vous utilisez la ligne

android:layout_height="wrap_content"

sur votre CardView , et comme les descendants ont match_parent , la taille de votre TextView .

Pour résoudre ce problème, vous pouvez utiliser la propriété suivante android: maxLines = "1" dans votre TextView . Cela empêchera TextView de passer à la ligne suivante, mais recadrera le texte.

Vous pouvez également utiliser une hauteur statique au lieu de match_parent ou wrap_content , c'est-à-dire en utilisant une valeur. Je recommande fortement d'utiliser 48dp car c'est ce que Material Design Les directives recommandent. Source:


0 commentaires