Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法将文本颜色状态列表添加到材料芯片_Android_Android Layout_Material Design_Material Components Android_Android Chips - Fatal编程技术网

Android 无法将文本颜色状态列表添加到材料芯片

Android 无法将文本颜色状态列表添加到材料芯片,android,android-layout,material-design,material-components-android,android-chips,Android,Android Layout,Material Design,Material Components Android,Android Chips,我正在尝试将文本颜色状态添加到材质芯片中。它甚至不可点击 layout.xml fragment.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(resource

我正在尝试将文本颜色状态添加到材质芯片中。它甚至不可点击

layout.xml


fragment.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\u chip\u state\u列表

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)
}

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

<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>

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

问题在于:

val chip=chip(上下文、空、R.style.Widget\u MaterialComponents\u chip\u选项)

这样,您就不会使用
小部件.MaterialComponents.Chip.Choice
样式,因为您不能使用构造函数
val Chip=Chip(context,null,R.style.xxxx)
分配样式,因为第三个参数不是样式,而是主题中的属性
R.attr.chipStyle

有关以编程方式更改芯片样式的更多详细信息,请参见

在代码中,您使用的是
芯片的默认样式
小部件.MaterialComponents.Chip.Action
,它提供:

<item name="android:checkable">false</item>
false
它解释了为什么您的
芯片不可检查。
方法
chip.setTextColor
是正确的,可与选择器一起使用(但使用中Ben.P所述的选择器)

正如您所指出的,如果在layout.xml中使用它,它会起作用,因为在这种情况下,布局中声明的样式是正确的(
Widget.MaterialComponents.Chip.Choice
)。

解决方案: 您可以使用几种状态,并且
芯片的默认值为


因此,您可以通过设置
android:textColor=“@color/color\u state\u list”

为什么? 查看

你可以看到它有
@color/mtrl\u choice\u chip\u text\u color


然后查看
mtrl\u choice\u chip\u text\u color.xml
您可以找到我上面提供的格式。

当我在layout.xml上指定时,它正在工作。但是,当我试图以编程方式添加文本颜色状态列表时,它不起作用。@BurakTaban问题出在您使用的构造函数中。您没有应用正确的样式,并且芯片不可检查。检查。在任何情况下,选择器中项目的正确顺序都在本答案中描述。请同时检查。