人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述设置com.google.android.material.chip.Chip选择的颜色相关的知识,希望能为你提供帮助。
如何设置所选的com.google.android.material.chip.Chip颜色?我不希望它成为默认的灰色。这是一个单选芯片组。
文章图片
原始文件here
<
com.google.android.material.chip.ChipGroup
android:id="@+id/chipgroup"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
app:checkedChip="@+id/chip_program"
app:chipSpacingHorizontal="32dp"
app:chipSpacingVertical="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/detailText"
app:singleSelection="true">
<
com.google.android.material.chip.Chip
android:id="@+id/chip_program"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Program"
app:chipEndPadding="16dp"
app:chipStartPadding="16dp" />
<
com.google.android.material.chip.Chip
android:id="@+id/chip_normal"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/program_normal"
app:chipEndPadding="16dp"
app:chipStartPadding="16dp" />
<
/com.google.android.material.chip.ChipGroup>
答案只需设置一个属性
app:chipBackgroundColor
并将颜色状态列表传递给它:<
android.support.design.chip.Chip
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@color/bg_chip_state_list"
app:chipText="Test" />
bg_chip_state_list
看起来像这样:<
?xml version="1.0" encoding="utf-8"?>
<
selector xmlns:android="http://schemas.android.com/apk/res/android">
<
item android:color="@color/colorSecondaryLight" android:state_checked="true" />
<
item android:color="@color/colorPrimaryDark" />
<
/selector>
【设置com.google.android.material.chip.Chip选择的颜色】然而,我还必须将
android:clickable
设置为true
才能完成这项工作另一答案使用ColorStateList是一种正确的方法。我想要添加的唯一内容是使用自定义定义的样式更加清晰,特别是如果要自定义一组属性。
除此之外,应用于所有视图的一种常见样式允许您在一个立即对所有视图应用的位置进行更改
styles.xml
<
style name="CustomChipChoice" parent="@style/Widget.MaterialComponents.Chip.Choice">
<
item name="chipBackgroundColor">
@color/background_color_chip_state_list<
/item>
<
item name="android:textColor">
@color/text_color_chip_state_list<
/item>
<
/style>
text_color_chip_state_list.xml
<
selector xmlns:android="http://schemas.android.com/apk/res/android">
<
item android:state_checked="true"
android:color="@color/color_checked" />
<
item android:state_checked="false"
android:color="@color/color_unchecked" />
<
/selector>
background_color_chip_state_list.xml
<
?xml version="1.0" encoding="utf-8"?>
<
selector xmlns:android="http://schemas.android.com/apk/res/android">
<
item android:color="@color/color1" android:state_checked="true" />
<
item android:color="@color/color2" />
<
/selector>
之后,您只需要为所有Chip视图应用自定义样式。
<
android.support.design.chip.Chip
android:layout_width="wrap_content"
android:layout_height="match_parent"
style="@style/CustomChipChoice"
android:checkable="true"
android:clickable="true"
android:focusable="true"
android:text="Chip text" />
另一答案对于那些使用
alpha-05
的人,我发现state_checked
在可过滤(parent="Widget.MaterialComponents.Chip.Filter"
)芯片上被忽略了。相反,你需要state_selected
:<
?xml version="1.0" encoding="utf-8"?>
<
selector xmlns:android="http://schemas.android.com/apk/res/android">
<
item android:color="@color/apricot" android:state_selected="true"/>
<
item android:color="@color/apricotSubtle"/>
<
/selector>
推荐阅读
- 如何模拟Android系统杀死的服务
- android studio - R未解决+ Clean项目无效
- 我如何使用“sdk / color.xml”中“app / color.xml”中提到的颜色()
- BasicNetwork.performRequest(意外响应代码401 android Volley库)
- 在React Native中创建android本机模块时,“undefined不是函数”
- 在从Golang Buffalo webapp发送推文时设置CSRF令牌时遇到问题
- 如何在Android应用程序中一次更改所有活动转换()
- UX研究技术及其应用
- UX研究方法和用户共鸣之路