Как группировать несколько просмотров в ConstraintLayout
Я добавил 3 кнопки в ConstraintLayout. Я добавил кнопку, чтобы отключить или включить эти кнопки.
Если бы я использовал обычный 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" />
Ответы
Ответ 1
Да, насколько я знаю, вы можете управлять видимостью, используя линейную разметку, но не включать/отключать представления, я думаю, исправьте меня, если я ошибаюсь. Так что теперь в ConstraintLayout мы также можем управлять видимостью определенной группы представлений, используя группу
Это новая функция, представленная в ConstraintLayout, которая в настоящее время находится в бета-версии.
Как добавить бета-версию ConstraintLayout в проект, следуйте инструкциям ниже
добавить поддержку maven в файл проекта gradle, как показано ниже
allprojects {
repositories {
maven { url 'https://maven.google.com' }
jcenter()
}
}
затем в приложении gardle зависимости добавьте зависимость библиотеки 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" />
где в группе идентификатор ссылки
app:constraint_referenced_ids="button7,button3,button2"
содержит разделенный запятыми идентификатор представления, который вы хотите обработать во время выполнения, поэтому в действии вы просто привязываете группу, как показано ниже, и обрабатываете видимость
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
РЕДАКТИРОВАТЬ стабильную версию ConrtsaintLayout 1.1.0, выпущенную 12 апреля 2018 года https://androidstudio.googleblog.com/2018/04/constraintlayout-110.html
реализация 'com.android.support.constraint: компоновка ограничений: 1.1.0'
Редактировать Android X Если кто-то использует пакет Android X, вы можете найти информацию о пакете здесь
https://developer.android.com/jetpack/androidx/migrate
Ответ 2
В настоящее время нет способа сделать это. Вы должны отключить каждую кнопку в отдельности, потому что ограничения добавляются к каждому виджету в ограничении.
Для группировки представлений вам нужно использовать группы представлений, которые не имеют смысла в контексте макета ограничений.
редактировать
С макетом ограничения: 1.1.0-бета1 вы можете группировать представления, используя android.support.constraint.Group
.