RecyclerView 内に ViewHolder の XML レイアウトがあります。
このレイアウトのルートは、高さが に設定されている ConstraintLayout ですwrap_content
。
このフラットな階層内には、3 つのテキストビューと高さが固定されたイメージ ビューがあります。のことを考える:
<ConstraintLayout>
<TextView height=wrap>
<TextView height=wrap>
<TextView height=wrap>
<ImageView height=150dp>
</ConstraintLayout>
比較的シンプルなレイアウトです。これbeta4
は、デザイナーでどのように見えるかです (最終的に実行時に、各 recyclerView セル):
「お役所仕事」で申し訳ありませんが、NDA 何とか何とかです。
つまり、要素は次のとおりです。
3 つのテキスト ビュー (素敵な紫の背景に赤テープ) 高さ 150 dp の ImageView は灰色のものです。
紫色の背景がルート ConstraintLayout に適用されました。すべていい。
Beta 5 で変更を加えていない場合は、次のようになります。
ご覧のとおり、紫色 (ルート) の Constraint Layout は「混乱」しており、以前のようにコンテンツをラップしません。
私が試したこと:
ConstraintLayout への追加
app:layout_constraintHeight_default="wrap"
(およびスプレッドも)。違いはありませんでした。ImageView には、
app:layout_constraintBottom_toBottomOf="parent"
削除しようとした制約がありますが、どちらも違いはありませんでした。beta4 に戻してください :)
記録として、これは完全なレイアウトです (id は、お役所仕事の理由で名前が変更されており、同じ理由で tools:text などはありません)。それ以外のレイアウトはまったく同じです。
<?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>
私は何か違うことをすることになっていますか?(これを RelativeLayout に置き換えて、おそらく同じことを行うことができることはわかっていますが、とにかく… ConstraintLayout を信じています!) :)