android - 无法将文本颜色状态列表添加到材料芯片
问题描述
我正在尝试将文本颜色状态添加到 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>
解决方案
切换<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>
从上到下解析列表,并选择第一个匹配项。在您的版本中,无论实际状态如何,第一个都将匹配(因为它根本没有定义任何状态)。
推荐阅读
- html - 如何用css取消一个项目
- authentication - 是否可以使用与 apiserver 请求关联的“额外”属性来使用 RBAC 做出授权决策?
- java - 使用 MediaPlayer 时,显示“E/ExtMediaPlayer-JNI: env->IsInstanceOf failed”错误。如何解决?
- java - 如何使用值从 HashMap 中删除键
- php - WooCommerce 自定义字段未显示在电子邮件或订单信息中
- node.js - 生成网页的 PDF
- yii2 - yii2,将现有的 unix 值转换为查询中的时间戳
- mysql - 使用 sequelize 连接到 aws rds 时连接被拒绝
- url-rewriting - 超链接重定向到掩码 URL
- javascript - 字符串的正则表达式令人困惑