#1. ConstraintLayout_Helper


今日整理するHelperはGroup Barrier Flow Guideline Layer

  • HelperはConstraintLayoutに含まれるサブビューのIDを使用してこれらのビューの状態に影響しますが、他のレイアウトで囲むのではなく、サブビューの「参照」形式にのみ影響します.
    したがって、サブビューを異なる状態にグループ化しながら、フラットな状態を維持することができます(ConstraintLayoutの利点).
    参照のシェイプがオフセットされているため、サブビューは複数のアシスタントによって参照できます.
    各アシスタントのフィーチャーは例にまとめられます.
  • Guideline
  • ガイドでは、dimesionを特定のxmlにのみ適用するのと同様にすることができます.
    サブビューのコンストレイントをガイドラインに関連付けることで、柔軟な条件を指定できます.
    <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_end="60dp" />
    このガイドラインは、独自のIDで他のビューのコンストレイントに関連付けられ、親に基づいて水平線または垂直線を指定の方向に描画します.
    app:layout_constraintGuide_percent="0.3"
    app:layout_constraintGuide_begin="30dp"
    app:layout_constraintGuide_end="60dp"
    垂直データムは最初から描画し、水平データムは上部から描画し、パーセントは0から1まで描画します.
  • Barrier
  • 足場は、参照ビューのセットを作成するガイドに似ていると言えます.
    参照ビューの輪郭に沿ってガイドラインを描画します.
  • したがって、上の図に示すように、垂直な枠線がHelloWorldより長いBarrie Testの輪郭に移動していることがわかります.
    ガイドと同様に、idを他のビューのコンストレイントに関連付け、フロービューが重複しないことを確認できます.
    <androidx.constraintlayout.widget.Barrier
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:barrierDirection="start"
            app:constraint_referenced_ids="textView,textView2"/>
    参照するビューのidをconstraint reference idsで受信し、barrierDirectionで垂直位置と水平位置を決定します.
    app:barrierDirection="top"
    app:barrierDirection="start"
    app:barrierDirection="end"
    app:barrierDirection="bottom"
  • Group
  • グループは、参照ビューの仰角と可視性に影響します.
    設定した値をビューで参照する値を同じ値に変更します.
    コンストレイントは、上のイメージのように指定できますが、コンストレイントは指定できません.この値は参照ビューのゼロに影響しません.
    <androidx.constraintlayout.widget.Group
            android:id="@+id/group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:elevation="20dp"
            android:visibility="visible"
            app:constraint_referenced_ids="textView,textView2" />
      <!--app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />-->
    widthとheightも適用されませんが、指定されていない場合は、実行時にエラーが発生します.
    constraint referenced idsに参照するビューidを追加し、グループの可視性または仰角を変更すると、これらのビューは参照のビューに反映されます.
  • Layer
  • レイヤは、参照ビューのアウトラインを使用してベースを作成するのと同じです.
    viewに似た背景、仰角、可視性、または制約、height、widthは指定できません.
    レイヤは、仰角を参照するビューの仰角に適用されない基礎概念です.
    したがって、上の画像と同様に、レイヤの仰角と参照ビューの仰角が異なり、参照ビューが常にレイヤの上にある場合があります.
  • 参照ビューとの間の余白(余白ではなく)を設定する場合は、ビューとレイヤの間の余白を適用するために、参照ビューのアウトラインに沿ってではなく塗りつぶしを設定する必要があります.
    複数のビューに同じアニメーションを設定する必要がある場合は、レイヤを使用できます.レイヤに適用されるアニメーションは、参照のすべてのビューにも適用されます.
  • <androidx.constraintlayout.helper.widget.Layer
            android:id="@+id/layer"
            android:layout_width="match_parent"
            android:layout_height="10dp"
            android:padding="10dp"
            android:background="@color/black"
            android:elevation="10dp"
            app:constraint_referenced_ids="textView,textView2" />
            <!--app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />-->
    グループと同様にconstraint reference idsで参照するidを受信します.
    Heightおよびwidthは、レイヤまたは参照ビューに適用されなくても、実行時エラーが発生するため、制約がありません.
  • Flow
  • プロセスは、サブビューとして参照されるビューを含む仮想レイアウトを作成するのと同様です.
    これは、参照ビュー内の制約のないビューをソートし、constraintとheight、widthの概念を持つことに関連します.
    既定のアトリビュートは水平方向に配置され、幅を超えたビューを次の行に下げます.(wrap)
    <androidx.constraintlayout.helper.widget.Flow
            android:id="@+id/flow"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="32dp"
            app:constraint_referenced_ids="button4,textView5"
            app:flow_horizontalAlign="center"
            app:flow_horizontalGap="16dp"
            app:flow_maxElementsWrap="2"
            app:flow_verticalAlign="top"
            app:flow_wrapMode="aligned"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2" />
    idを参照する順序に応じて、左から右、上から下に整列し、改行せずに参照ビューにコンストレイントを適用する2つの改行方式をサポートします.
    app:flowで始まる複数のプロパティがあり、デフォルトでは水平と垂直の設定が受け入れられます.
    整列については、原則として水平方向と垂直方向の中央揃えであり、参照ビューの制約もflow xAlignの影響も受けません.
    chainの場合、参照ビューのコンストレイントと位置合わせの影響で、より多くの位置合わせを試みることができます.
    さらに、他のビューでは、コンストレイントをストリームに関連付け、barrierと同様に使用することもできます.
  • ただし、flowは他のアシスタントとは異なり、参照したビュー(上の画像など)が別のflowで参照されている場合は正常に動作しないため、LinearLayoutと同様に行単位を適用する必要があります.
    flowでは、さまざまな設定やアプリケーションを直接テストすることをお勧めします.
    機会があればflowの様々な応用方法を単独でご紹介します