Android 无法将文本颜色状态列表添加到材料芯片
我正在尝试将文本颜色状态添加到材质芯片中。它甚至不可点击 layout.xmlAndroid 无法将文本颜色状态列表添加到材料芯片,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
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问题出在您使用的构造函数中。您没有应用正确的样式,并且芯片不可检查。检查。在任何情况下,选择器中项目的正确顺序都在本答案中描述。请同时检查。