J'essaie de créer une composition de mise en page à l'aide de ConstraintLayout . Pour simplifier mon cas, ma mise en page doit comporter trois parties:
La partie avec laquelle je me bats est de définir une hauteur maximale pour la première mise en page (rouge). Il semble que ConstraintLayout ignore mes "instructions de hauteur maximale":
app:layout_constraintHeight_max="300dp"
Voici mon résultat actuel (la partie rouge ignore la limite de hauteur ..):
Voici le code XML complet:
<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:id="@+id/coordinatorLayout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/white"
tools:context="com.mixtiles.Android.reviewOrder.ReviewOrderActivity"
tools:layout_editor_absoluteY="25dp">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appBarLayout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/white">
<Android.support.v7.widget.Toolbar
Android:id="@+id/review_order_toolbar"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:elevation="4dp"
Android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>
<FrameLayout
Android:id="@+id/red"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:background="@color/red"
app:layout_constraintBottom_toTopOf="@+id/green"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="300dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
app:layout_constraintVertical_chainStyle="spread_inside">
</FrameLayout>
<FrameLayout
Android:id="@+id/green"
Android:layout_width="0dp"
Android:layout_height="150dp"
Android:background="@color/greenish"
app:layout_constraintBottom_toTopOf="@+id/pink"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/red">
</FrameLayout>
<FrameLayout
Android:id="@+id/pink"
Android:layout_width="match_parent"
Android:layout_height="150dp"
Android:background="@color/pink"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/green">
</FrameLayout>
Android:layout_height="wrap_content"
app:layout_constraintHeight_max="300dp"
app:layout_constrainedHeight="true"
assurez-vous de définir la hauteur wrap_content
Le problème peut être que vous ne pouvez pas avoir ces deux contraintes définies en même temps sur la vue rouge:
app:layout_constraintBottom_toTopOf="@+id/green"
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
Si ces deux contraintes sont définies, la vue rouge sera attachée en haut à appBarLayout et en bas à la vue verte, ce qui signifie qu'elle occupera tout l'espace entre ces deux vues.
Si vous souhaitez que la contrainte de hauteur maximale soit respectée, vous devez supprimer l'une de ces deux contraintes. Lequel doit être retiré dépend du type de résultat final que vous attendez.
ANCIENNE REPONSE
Je pense que vous devriez utiliser Android:maxHeight
au lieu de app:layout_constraintHeight_max
.