首页 > 解决方案 > 无法将文本颜色状态列表添加到材料芯片

问题描述

我正在尝试将文本颜色状态添加到 Material Chip。它甚至不可点击。

布局.xml

<HorizontalScrollView
    android:id="@+id/horizontalScrollView"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <com.google.android.material.chip.ChipGroup
        android:id="@+id/cgServiceList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:singleLine="true"
        app:singleSelection="true" />
</HorizontalScrollView>

片段.kt

val chipGroup = view.cgServiceList

for (x in 0..12) {
    val chip = Chip(context, null, R.style.Widget_MaterialComponents_Chip_Choice)

    chip.text = "Nail Care"
    chip.setTextColor(resources.getColorStateList(R.color.txt_chip_state_list, null))
    chip.isClickable = true

    chipGroup.addView(chip)
}

R.color.txt_chip_state_list

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/black" />
    <item android:color="@color/colorPrimary" android:state_checked="true"  />
</selector>

标签: androidandroid-layoutmaterial-designmaterial-components-androidandroid-chips

解决方案


切换<item>状态列表中元素的顺序:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorPrimary" android:state_checked="true"  />
    <item android:color="@color/black" />
</selector>

从上到下解析列表,并选择第一个匹配项。在您的版本中,无论实际状态如何,第一个都将匹配(因为它根本没有定义任何状态)。


推荐阅读