Изменение стиля Chip Widget программно не работает - Android - PullRequest
0 голосов
/ 30 ноября 2018

Я делаю список с чипами.Я хочу, чтобы этот чип можно было выбрать, поэтому, взглянув на https://material.io/develop/android/components/chip/, я вижу, что у меня может быть "Выборочный чип".

Поскольку мне нужно создавать и добавлять динамически, я должен настроить сконкретные цвета, цветовая рябь, ...

Так что мне нужно настроить это:

val chip = Chip(context, null, R.style.CustomChipChoice)
            chip.isClickable = true
            chip.isCheckable = true
            chip.isCheckedIconVisible=false
            chip.height = ScreenUtils.dpToPx(40)
            chip.chipCornerRadius = (ScreenUtils.dpToPx(20)).toFloat()
            chip.chipStrokeWidth = (ScreenUtils.dpToPx(2)).toFloat()
            chip.setTextAppearanceResource(R.style.ChipTextStyle)
            return chip

Что я пытаюсь с R.style.CustomChipChoice это:

CustomChipChoice style

<style name="CustomChipChoice" parent="@style/Widget.MaterialComponents.Chip.Choice">
        <item name="chipBackgroundColor">@color/background_color_chip_state_list</item>
        <item name="chipStrokeColor">@color/background_color_chip_state_list</item>
        <item name="rippleColor">@color/topic_social_pressed</item>
</style>

background_color_chip_state_list

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/topic_social_selected" android:state_checked="true" />
    <item android:color="@color/topic_social_pressed" android:state_pressed="true" />
    <item android:color="@color/topic_unselected_background" />
</selector>

stroke_color_chip_state_list

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/topic_social_pressed" android:state_checked="true"/>
    <item android:color="@color/grey_material2" android:state_checked="false"/>
</selector>

Как вы можетевидите, я делаю чип, кликабельный и проверяемый (скрывая значок проверки, который мне не нужен).

Но когда я тестирую его, цвета не устанавливаются.Чипы просто выглядят как цвета по умолчанию (шкала Грея)

Где я могу применить или как этот пользовательский стиль?

PS:

Я сделал быстрый тест, чтобыпосмотрите, не был ли у меня CustomStyle некорректен / т. д.

Я добавил представление через xml и отлично работал ...

<android.support.design.chip.Chip
                android:id="@+id/test"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/CustomChipChoice"
                android:checkable="true"
                android:clickable="true"
                app:checkedIconVisible="false"
                android:text="Chip Test"/>

1 Ответ

0 голосов
/ 30 апреля 2019

Чтобы установить стиль чипа в коде, вы можете попробовать следующее:

val chip = Chip(context)
val drawable = ChipDrawable.createFromAttributes(context, null, 0, R.style.Widget_MaterialComponents_Chip_Choice)
chip.setChipDrawable(drawable)
...