仅在选中状态下更改复选框颜色并禁用用户交互

Change Checkbox color only in checked state and disable user interaction

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

但这不起作用。

测试一下

更改文本和框的颜色

 if (checkBoxState == true){
            checkBox.setTextColor(Color.RED);
            checkBox.setEnabled(false);
        }else {
            checkBox.setEnabled(true);
        }

    <style name="changebox">
    <item name="colorAccent">#111</item>
</style>

.

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/changebox"/>

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

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>

使用 Material 组件主题

<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 Theme 请注意,如果您在应用程序主题中定义了 colorAccent(您不应将其添加到非桥接 Material Components 主题中)。
在这种情况下(我不知道它是 bug 还是预期的行为)Material 复选框使用 colorAccent 而不是 colorSecondary。只需在 ThemeOverlay.CheckBox.

中添加 colorAccentcolorControlActivated