相关疑难解决方法(0)

以编程方式更改Chip Widget样式不起作用-Android

我正在用Chips做一份清单。我希望可以选择这种芯片,因此,请看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
Run Code Online (Sandbox Code Playgroud)

我尝试的R.style.CustomChipChoice是:

CustomChipChoice样式

<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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

如您所见,我将芯片制作为可点击且可检查的(隐藏不需要的选中图标)。

但是当我测试它时,没有设置颜色。芯片看起来只是默认的颜色(灰度)

这种自定义样式可以在哪里应用或如何应用?

PS:

我进行了快速测试,以查看我的CustomStyle是否格式错误/等。

我通过xml添加了一个视图,并且运行良好。

<android.support.design.chip.Chip
                android:id="@+id/test" …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-chips material-components material-components-android

7
推荐指数
3
解决办法
1262
查看次数