Фильтр с чипами андроид

Я хотел бы спросить вас, существует ли компонент, который является радиокнопкой, но это формат из чипов, подобных этому изображению. это компонент, представленный в Google Play Games, когда вы хотите найти игру

введите здесь описание изображения введите здесь описание изображения

спасибо за наш ответ


person Giuseppe Raddato    schedule 16.03.2020    source источник


Ответы (1)


Это не совсем то, что вы ищете, но вы можете использовать:

  • контейнер с закругленными углами, например CardView или LinearLayout
  • одиночные Button с закругленными углами для каждого элемента
  • добавить анимацию на событие onClick

Что-то типа:

   <LinearLayout
        android:id="@+id/ll_container"
        ..>

             <com.google.android.material.button.MaterialButton
                 style="@style/materialButtonOutlinedStyle"
                  .../>

              <View
                 android:layout_width="1dp"
                 android:layout_height="..."
                 ../>

              <com.google.android.material.button.MaterialButton
                  style="@style/materialButtonOutlinedStyle"
                  ..>

              <!-- ..... -->

        </LinearLayout>

с:

  <style name="materialButtonOutlinedStyle" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="strokeWidth">0dp</item>
    <item name="shapeAppearanceOverlay">@style/rounded_button</item>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
  </style>

  <style name="rounded_button">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
  </style>

Для контейнера вы можете обернуть кнопки CardView с закругленными углами или вы можете просто применить к LinearLayout что-то вроде:

float radius = getResources().getDimension(R.dimen.default_corner_radius);
LinearLayout linearLayout= findViewById(R.id.ll_container);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
    .toBuilder()
    .setAllCorners(CornerFamily.ROUNDED,radius)
    .build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.white));
shapeDrawable.setStrokeWidth(1.0f);
shapeDrawable.setStrokeColor(ContextCompat.getColorStateList(this,R.color...));


ViewCompat.setBackground(linearLayout,shapeDrawable);

введите здесь описание изображения введите здесь описание изображения

person Gabriele Mariotti    schedule 17.05.2020