J'ai une disposition XML pour un ViewHolder dans un RecyclerView.ConstraintLayout beta5 wrap_content n'emballe pas correctement
La racine de ce modèle est un objet ConstraintLayout dont la hauteur est wrap_content
.
A l'intérieur de cette hiérarchie plane, il y a 3 textviews et une vue d'image avec une hauteur fixe; penser à:
<ConstraintLayout>
<TextView height=wrap>
<TextView height=wrap>
<TextView height=wrap>
<ImageView height=150dp>
</ConstraintLayout>
C'est une mise en page relativement simple. Dans ce beta4
est à quoi il ressemble dans le concepteur (et éventuellement à l'exécution, chaque cellule recyclerView):
Toutes mes excuses pour la « bureaucratie » mais il est NDA bla bla.
Cela étant dit, les éléments sont les suivants:
Les 3 vues texte (rouge scotché avec un joli fond violet) Le ImageView avec 150dp hauteur est la chose grise.
Le fond violet a été appliqué à la racine ConstraintLayout. Tout est sympa.
Maintenant, c'est à quoi il ressemble, sans une modification simple avec Beta 5:
Comme vous pouvez le voir le pourpre (racine) Constraint mise en page est maintenant « confus » et ne pas envelopper le contenu comme avant.
choses que j'essayé:
Ajout
app:layout_constraintHeight_default="wrap"
au ConstraintLayout (et la propagation trop). N'a pas fait la différence.Le ImageView a une contrainte
app:layout_constraintBottom_toBottomOf="parent"
que j'ai essayé de supprimer, n'a pas fait de différence non plus.revenir à beta4 :)
Pour mémoire, c'est la mise en page complète (id de ont été rebaptisés pour des raisons lourdeurs administratives et aucun outil: texte ou similaire en raison des mêmes raisons) . La mise en page est par ailleurs exactement la même.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent">
<TextView
android:id="@+id/toplabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text=""
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/top_bottom_label"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/top_right_label"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/top_right_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:gravity="end"
android:maxLines="1"
android:text=""
app:layout_constraintBottom_toTopOf="@+id/top_bottom_label"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintLeft_toRightOf="@+id/toplabel"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/top_bottom_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:gravity="end"
android:maxLines="1"
android:text=""
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintLeft_toRightOf="@+id/toplabel"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top_right_label" />
<ImageView
android:id="@+id/imageview"
android:layout_width="0dp"
android:layout_height="150dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top_bottom_label"
app:srcCompat="@android:color/darker_gray" />
</android.support.constraint.ConstraintLayout>
Suis-je censé faire quelque chose de différent? (Je sais que je peux le remplacer par un RelativeLayout et faire probablement la même chose, mais quand même ... Je crois en ConstraintLayout!) :)