android - 仅在选中状态下更改复选框颜色并禁用用户交互
问题描述
我只想在复选框处于选中状态时将其颜色更改为蓝色,目前“buttontint”将默认颜色设置为蓝色,所以请告诉我如何做到这一点,我也想像没有人可以手动那样禁用它检查一下,在这种情况下该怎么办?
编辑:我试过这种风格:
<style name="MyCheckbox" parent="@style/Widget.AppCompat.CompoundButton.CheckBox">
<item name="android:colorControlNormal">@color/check_border</item>
<item name="android:colorControlActivated">@color/buy_color</item>
<item name="android:colorControlHighlight">@color/check_border</item>
</style>
但这不起作用。
解决方案
您可以使用以下方法覆盖单个复选框中的颜色:
AppCompat 主题:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LABEL"
android:checked="true"
android:theme="@style/OverlayCheckbox"/>
和:
<style name="OverlayCheckbox">
<item name="colorAccent">@color/light</item>
</style>
使用材料组件主题:
<com.google.android.material.checkbox.MaterialCheckBox
...
android:theme="@style/ThemeOverlay.CheckBox"/>
和:
<style name="ThemeOverlay.CheckBox" parent="">
<item name="colorSecondary">@color/....</item> <!-- checked -->
<item name="colorOnSurface">@color/.....</item> <!-- unchecked -->
</style>
如果您在应用程序主题中定义了 Material Components 主题,请注意colorAccent
(您不应将其添加到非桥接的 Material Components 主题中)。
在这种情况下(我不知道这是错误还是预期行为),MaterialCheckbox 使用.colorAccent
而不是colorSecondary
. 只需在. colorAccent
_colorControlActivated
ThemeOverlay.CheckBox
推荐阅读
- python - 如何根据 Python 中的部分匹配从文本中删除子字符串?
- python - 如果条件满足,如何将 if 条件与 pandas 一起应用并将其写入新列?
- javascript - WooCommerce - 如何将数量与产品页面上的尺寸和颜色变化联系起来
- html - 如何为单个列表项设置动画?
- c++ - array::operator[] 实际上是 noexcept 吗?
- python - 如何在 Python 中写入 Excel
- java - Java - 计算文件中的单词、行和字符
- javascript - 对数组中的 CSV 字符串进行排序,不包括零索引
- node.js - 错误:方法 eth_sendTransaction 不存在/不可用
- django - django 用户创建的下拉列表项