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 Réponses :
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.
Je le sais. C'est pourquoi j'ai besoin d'un ajustement automatique et non d'une hauteur fixe.
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
Cela donnera exactement ce dont vous avez besoin
Essayez de remplacer votre
TextViewpar 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}" />
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:
Bonjour, bienvenue sur StackOverFlow. Veuillez fournir la mise en page de
recyclerviewitem.xmlvous 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.