web-dev-qa-db-ja.com

ConstraintLayoutで複数のビューをグループ化する方法

ConstraintLayoutに3つのボタンを追加しました。これらのボタンを無効または有効にするボタンを追加しました。

通常のLinearLayoutを使用していた場合。すべてのボタンをリニアレイアウトに配置し、その特定のレイアウトを有効または無効にすることができます。

しかし、私はConstraintLayoutを使用しています。したがって、これらのボタンをすべて無効または有効にする必要があります。ConstraintLayoutには、さまざまなビューをグループ化する方法が必要だと思います。

ConstriantLayoutでビューをグループ化する方法を教えてください

enter image description here

  <Button
        Android:text="Button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/button"
        Android:layout_marginTop="16dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        Android:layout_marginBottom="16dp"
        Android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        Android:layout_marginLeft="16dp" />

    <Button
        Android:text="Button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/button2"
        app:layout_constraintBottom_toBottomOf="parent"
        Android:layout_marginBottom="16dp"
        Android:layout_marginStart="8dp"
        app:layout_constraintLeft_toRightOf="@+id/button"
        Android:layout_marginLeft="8dp"
        app:layout_constraintTop_toTopOf="@+id/button" />

    <Button
        Android:text="Button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/button3"
        app:layout_constraintTop_toTopOf="@+id/button2"
        Android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        Android:layout_marginRight="16dp"
        Android:layout_marginStart="8dp"
        app:layout_constraintLeft_toRightOf="@+id/button2"
        Android:layout_marginLeft="8dp" />
16
Kirmani88

はい、線形レイアウトを使用して可視性を処理できますが、ビューの有効化/無効化はできないと思いますが、間違っている場合は修正してください。したがって、ConstraintLayoutでは、Groupを使用して特定のビューグループの可視性も処理できます。

これは、現在ベータ版であるConstraintLayoutで導入された新機能です。

ベータ版のConstraintLayoutをプロジェクトに追加する方法は次のとおりです。

プロジェクトgradleファイルに以下のようにMavenサポートを追加します

allprojects {
    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
}

その後、アプリガードルの依存関係にConstarintLayoutライブラリの依存関係を追加します

compile 'com.Android.support.constraint:constraint-layout:1.1.0-beta3'

次のようにConstraintLayoutにグループを追加する必要があります

<Android.support.constraint.Group
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:constraint_referenced_ids="button7,button3,button2"
        Android:id="@+id/group" />  

グループ参照IDのどこか

app:constraint_referenced_ids="button7,button3,button2"

実行時に処理するコンマ区切りのビューIDが含まれているため、アクティビティでは、次のようにグループをバインドして可視性を処理します

import Android.support.constraint.Group; //import statement in activity

Group group=(Group)findViewById(R.id.group);//bind view from xml
group.setVisibility(View.VISIBLE);//this will visible all views
group.setVisibility(View.GONE);//this will set Gone to all views
group.setVisibility(View.INVISIBLE);//this will set INVISIBLE to all view

2018年4月12日にリリースされたConrtsaintLayout 1.1.0安定版の編集https://androidstudio.googleblog.com/2018/04/constraintlayout-110.html

実装 'com.Android.support.constraint:constraint-layout:1.1.0'

Edit Android X X Android xパッケージを使用している場合、パッケージ情報はここで見つけることができます

https://developer.Android.com/jetpack/androidx/migrate

42
Pavan

現在、それを行う方法はありません。 constraintlayoutの各ウィジェットに制約が追加されるため、各ボタンを個別に無効にする必要があります。

ビューをグループ化するには、ビューグループを使用する必要がありますが、これは制約レイアウトのコンテキストでは意味がありません。

編集

制約レイアウト:1.1.0-beta1では、Android.support.constraint.Groupを使用してビューをグループ化できます。

1
Arnav Rao