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
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}" />
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
recyclerview
item.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.