4

RecyclerView 内に ViewHolder の XML レイアウトがあります。

このレイアウトのルートは、高さが に設定されている ConstraintLayout ですwrap_content

このフラットな階層内には、3 つのテキストビューと高さが固定されたイメージ ビューがあります。のことを考える:

<ConstraintLayout>
     <TextView height=wrap>
     <TextView height=wrap>
     <TextView height=wrap>
     <ImageView height=150dp>
</ConstraintLayout>

比較的シンプルなレイアウトです。これbeta4は、デザイナーでどのように見えるかです (最終的に実行時に、各 recyclerView セル):

ベータ4

「お役所仕事」で申し訳ありませんが、NDA 何とか何とかです。

つまり、要素は次のとおりです。

3 つのテキスト ビュー (素敵な紫の背景に赤テープ) 高さ 150 dp の ImageView は灰色のものです。

紫色の背景がルート ConstraintLayout に適用されました。すべていい。

Beta 5 で変更を加えていない場合は、次のようになります。

ベータ5

ご覧のとおり、紫色 (ルート) の Constraint Layout は「混乱」しており、以前のようにコンテンツをラップしません。

私が試したこと:

  1. ConstraintLayout への追加app:layout_constraintHeight_default="wrap"(およびスプレッドも)。違いはありませんでした。

  2. ImageView には、app:layout_constraintBottom_toBottomOf="parent"削除しようとした制約がありますが、どちらも違いはありませんでした。

  3. 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 を信じています!) :)

4

1 に答える 1