仅在选中状态下更改复选框颜色并禁用用户交互
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
.
中添加 colorAccent
或 colorControlActivated
我只想在复选框处于选中状态时将其颜色更改为蓝色,目前"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
.
colorAccent
或 colorControlActivated