Android
ConstraintLayout
サーチ…
前書き
ConstraintLayout
はViewGroup
で、ウィジェットを柔軟に配置し、サイズを設定できます。 Android 2.3(APIレベル9)以上に対応しています。
フラットなビュー階層を使用して、大きく複雑なレイアウトを作成することができます。 RelativeLayout
と似ていますが、すべてのビューは兄弟ビューと親レイアウトの関係に従ってレイアウトされていますが、 RelativeLayout
よりも柔軟で、Android Studioのレイアウトエディタで使いやすくなっています。
構文
ConstraintLayout
public void addView(Viewの子、intインデックス、ViewGroup.LayoutParams params)
public ConstraintLayout.LayoutParams generateLayoutParams(AttributeSet attrs)
public void onViewAdded(ビューを表示)
public void onViewRemoved(ビューを表示)
public void removeView(ビューの表示)
public void requestLayout()
保護されたブール値checkLayoutParams(ViewGroup.LayoutParams params)
ConstraintLayout.LayoutParams generateDefaultLayoutParams()を保護します。
ViewGroup.LayoutParams generateLayoutParamsを保護しました(ViewGroup.LayoutParams params)
保護されたvoid onLayout(boolean changed、int left、int top、int right、int bottom)
保護されたvoid onMeasure(int widthMeasureSpec、int heightMeasureSpec)
ConstraintLayout.LayoutParams
public void resolveLayoutDirection(int layoutDirection)
public void validate()
保護されたvoid setBaseAttributes(TypedArray a、int widthAttr、int heightAttr)
パラメーター
パラメータ | 詳細 |
---|---|
子 | レイアウトに追加するView |
索引 | レイアウト階層のView のインデックス |
パラメータ | View のLayoutParams |
attrs | AttributeSet を定義LayoutParams |
見る | 追加または削除されたView |
かわった | このView がサイズまたは位置を変更したかどうかを示します。 |
左 | 親View に対する左位置。 |
上 | 親View に対する相対位置の最上位 |
右 | 親View に対する相対位置 |
底 | 下位の位置、親View に対する相対位置 |
widthMeasureSpec | 親View によって課される水平スペース要件 |
heightMeasureSpec | 親View によって課される垂直方向のスペース要件 |
layoutDirection | - |
a | - |
widthAttr | - |
heightAttr | - |
備考
Google IO 2016では、GoogleがConstraintLayoutという名前の新しいAndroidレイアウトを発表しました。
現在のところ、このレイアウトはベータ版であるため、注意してください。
制約レイアウトの詳細:
https://codelabs.developers.google.com/codelabs/constraint-layout/index.html
プロジェクトにConstraintLayoutを追加する
ConstraintLayoutを使用するには、Androidスタジオバージョン2.2以降が必要で、バージョン32以上のAndroidサポートリポジトリが必要です。
- Constraint Layoutライブラリを
build.gradle
ファイルの依存関係として追加します。
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2'
}
- プロジェクトを同期する
プロジェクトに新しい制約レイアウトを追加するには:
- モジュールのレイアウトディレクトリを右クリックし、[
New > XML > Layout XML.
]New > XML > Layout XML.
]New > XML > Layout XML.
]をクリックしNew > XML > Layout XML.
- レイアウトの名前を入力し、ルートタグに
"android.support.constraint.ConstraintLayout"
と入力します。 - Finishをクリックします。
それ以外の場合は、レイアウトファイルを追加してください:
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
チェーン
ConstraintLayout
alpha 9以降、 チェーンが利用可能です。 チェーン内のビューのセットであるConstraintLayout
制約とBに接続、すなわち、それらの間の双方向ように接続され、Bは別の制約とに接続されています。
例:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- this view is linked to the bottomTextView -->
<TextView
android:id="@+id/topTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toTopOf="@+id/bottomTextView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainPacked="true"/>
<!-- this view is linked to the topTextView at the same time -->
<TextView
android:id="@+id/bottomTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom\nMkay"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/topTextView"/>
</android.support.constraint.ConstraintLayout>
この例では、2つのビューが上下に配置され、両方が垂直にセンタリングされています。チェーンのバイアスを調整することによって、これらのビューの垂直位置を変更することができます。チェーンの最初の要素に次のコードを追加します。
app:layout_constraintVertical_bias="0.2"
垂直チェーンでは、最初の要素は一番上のビューで、横のチェーンでは一番左のビューです。最初の要素はチェーン全体の振る舞いを定義します。
チェーンは新機能であり、頻繁に更新されます。 ここに公式のAndroid関連文書があります。