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 - я поддерживаю эту развилку для функций, которые мне в ней необходимы.

Chip Cloud View

Пишу думаю, что кому то поможет. У меня была похожая проблема. Но у меня была одна строчка . И я решил эту проблему в следующем виде

      <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>
  1. Установите ширину "com.google.android.material.chip.ChipGroup" в wrap_content ; "match_parent" не будет работать.

  2. Установите ширину каждого отдельного чипа на «match_parent».

  3. Бонус: чтобы добавить пространство между фишками, добавьте атрибут app:chipSpacingHorizontal="20dp" или "app:chipSpacingVertical="20dp"" в виджет ChipGroup.

Пожалуйста, попробуйте следующее:

layout_gravity="center"

Надеюсь, что это поможет вам.

Поместите ширину группы чипов в wrap_content и сделать родительский взгляд на гравитацию center который содержит группу чипов. Так что это будет выровнено по центру.

Другие вопросы по тегам