首页 > 解决方案 > 仅在选中状态下更改复选框颜色并禁用用户交互

问题描述

我只想在复选框处于选中状态时将其颜色更改为蓝色,目前“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>

但这不起作用。

标签: androidandroid-checkbox

解决方案


您可以使用以下方法覆盖单个复选框中的颜色:

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_colorControlActivatedThemeOverlay.CheckBox


推荐阅读