如何在 ConstraintLayout 中对多个视图进行分组
How to group multiple views in a ConstraintLayout
我在 ConstraintLayout 中添加了 3 个按钮。我添加了一个按钮来禁用或启用这些按钮。
如果我使用普通的 LinearLayout。我可以将所有按钮放在线性布局中并启用或禁用该特定布局。
但是我用的是ConstraintLayout。所以我需要禁用或启用所有这些按钮,我相信 ConstraintLayout 中一定有一种方法可以对不同的视图进行分组。
请指导我如何在 ConstriantLayout 中对视图进行分组
<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" />
目前您无法做到这一点。您必须单独禁用每个按钮,因为约束已添加到约束布局中的每个小部件。
要对视图进行分组,您需要使用视图组,这在约束布局的上下文中没有意义。
编辑
使用约束 layout:1.1.0-beta1,您可以使用 android.support.constraint.Group
.
对视图进行分组
是的,据我所知,您可以使用线性布局来处理可见性,但我认为 Enable/Disable 视图不能,如果我错了请纠正我。所以现在在 ConstraintLayout 中我们也可以使用 Group
处理特定视图组的可见性
This is new feature introduced in ConstraintLayout which is currently
in Beta version.
如何按照以下步骤将 beta ConstraintLayout 添加到项目
在项目gradle文件中添加maven支持如下
allprojects {
repositories {
maven { url 'https://maven.google.com' }
jcenter()
}
}
然后在app gardle dependencies中添加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,因此在 activity 中您只需按如下方式绑定组并处理可见性
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
编辑:ConstraintLayout 1.1.0 稳定版于 2018 年 4 月 12 日发布
https://androidstudio.googleblog.com/2018/04/constraintlayout-110.html
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
编辑:Android X
如果有人使用 android x 包,您可以在此处找到包信息
https://developer.android.com/jetpack/androidx/migrate
并使用:
<androidx.constraintlayout.widget.Group />
我在 ConstraintLayout 中添加了 3 个按钮。我添加了一个按钮来禁用或启用这些按钮。
如果我使用普通的 LinearLayout。我可以将所有按钮放在线性布局中并启用或禁用该特定布局。
但是我用的是ConstraintLayout。所以我需要禁用或启用所有这些按钮,我相信 ConstraintLayout 中一定有一种方法可以对不同的视图进行分组。
请指导我如何在 ConstriantLayout 中对视图进行分组
<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" />
目前您无法做到这一点。您必须单独禁用每个按钮,因为约束已添加到约束布局中的每个小部件。
要对视图进行分组,您需要使用视图组,这在约束布局的上下文中没有意义。
编辑
使用约束 layout:1.1.0-beta1,您可以使用 android.support.constraint.Group
.
是的,据我所知,您可以使用线性布局来处理可见性,但我认为 Enable/Disable 视图不能,如果我错了请纠正我。所以现在在 ConstraintLayout 中我们也可以使用 Group
处理特定视图组的可见性This is new feature introduced in ConstraintLayout which is currently in Beta version.
如何按照以下步骤将 beta ConstraintLayout 添加到项目
在项目gradle文件中添加maven支持如下
allprojects {
repositories {
maven { url 'https://maven.google.com' }
jcenter()
}
}
然后在app gardle dependencies中添加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,因此在 activity 中您只需按如下方式绑定组并处理可见性
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
编辑:ConstraintLayout 1.1.0 稳定版于 2018 年 4 月 12 日发布 https://androidstudio.googleblog.com/2018/04/constraintlayout-110.html
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
编辑:Android X 如果有人使用 android x 包,您可以在此处找到包信息
https://developer.android.com/jetpack/androidx/migrate
并使用:
<androidx.constraintlayout.widget.Group />