Android как по центру выровнять чипы в чипгруппе?
Я старался gravity="center"
, foregroundGravity="center"
а также textAlignment="center"
для ChipGroup в файле XML, но он не будет работать. Есть идеи? Вот так это выглядит сейчас
9 ответов
Я попытался использовать Chip внутри Flexbox, и это сработало так.
<com.google.android.flexbox.FlexboxLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:flexWrap="wrap"
app:justifyContent="center"> ... </com.google.android.flexbox.FlexboxLayout>
Должны быть лучшие способы для достижения этого, но я думаю, это сработает.
Если у вас есть
ChipGroup
в
ConstraintLayout
, использовать
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
как таковой:
<com.google.android.material.chip.ChipGroup
android:id="@+id/chips"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
...
Не устанавливайте
layout_width
поле быть
match_parent
, так как это не сработает.
Поместите его в LinearLayout и сделайте его гравитацию "center_horizontal". Затем установите для layout_width группы микросхем значение "wrap_content". Это сработало для меня.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">
<com.google.android.material.chip.ChipGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/langsChipGroup"
>
</com.google.android.material.chip.ChipGroup>
</LinearLayout>
Эта библиотека поможет вам выяснить ваш запрос. пожалуйста, проверьте это. и дайте мне знать ваши мысли для того же.
Библиотека ChipCloud изначально была (очень) быстро подстроена под Android для какого-то более крупного проекта по хакатону от fiskurgit. Создает упаковочное облако материала "Чипсы". Базовая демонстрация их версии доступна в магазине Play Store - я поддерживаю эту развилку для функций, которые мне в ней необходимы.
Пишу думаю, что кому то поможет. У меня была похожая проблема. Но у меня была одна строчка . И я решил эту проблему в следующем виде
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<com.google.android.material.chip.ChipGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="@dimen/padding"
android:paddingEnd="@dimen/padding"
app:singleLine="true">
<com.google.android.material.chip.Chip
style="@style/Widget.MaterialComponents.Chip.Entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<com.google.android.material.chip.Chip
style="@style/Widget.MaterialComponents.Chip.Entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
// ...
</com.google.android.material.chip.ChipGroup>
</HorizontalScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
Рад, если кому-то помог.
Вы можете пойти, создав один родительский RelativeLayout и для каждого использования чип-группы android:layout_centerHorizontal="true"
, что-то вроде этого
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true">
<TextView
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:background="@android:color/darker_gray"
android:text="View1" />
<TextView
android:id="@+id/view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_toRightOf="@id/view1"
android:background="@android:color/darker_gray"
android:text="View2" />
</RelativeLayout>
</RelativeLayout>
Установите ширину "com.google.android.material.chip.ChipGroup" в wrap_content ; "match_parent" не будет работать.
Установите ширину каждого отдельного чипа на «match_parent».
Бонус: чтобы добавить пространство между фишками, добавьте атрибут app:chipSpacingHorizontal="20dp" или "app:chipSpacingVertical="20dp"" в виджет ChipGroup.
Пожалуйста, попробуйте следующее:
layout_gravity="center"
Надеюсь, что это поможет вам.
Поместите ширину группы чипов в wrap_content
и сделать родительский взгляд на гравитацию center
который содержит группу чипов. Так что это будет выровнено по центру.