ConstraintLayoutを使用してレイアウト構成を作成しようとしています。ケースを簡素化するために、レイアウトには3つの部分が必要です。
私が苦労しているのは、最初のレイアウトの最大高さを設定することです(赤)。 ConstraintLayoutは私の「最大高さステートメント」を無視しているようです:
app:layout_constraintHeight_max="300dp"
これが私の現在の結果です(赤い部分は高さの制限を無視します。):
完全なXMLは次のとおりです。
<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"
必ず高さwrap_contentを設定してください
問題は、赤いビューでこれらの両方の制約を同時に設定できないことです。
app:layout_constraintBottom_toTopOf="@+id/green"
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
これらの両方の制約が設定されている場合、赤いビューはappBarLayoutの上部、緑のビューの下部にアタッチされます。つまり、これらの2つのビュー間のすべてのスペースを占有します。
最大高さの制約を尊重する場合は、これらの2つの制約のいずれかを削除する必要があります。どちらを削除するかは、期待する最終結果の種類によって異なります。
古い回答
Android:maxHeight
の代わりにapp:layout_constraintHeight_max
を使用する必要があると思います。