xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.AutomaticDeviceDispenser" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryVariant">@color/white</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/white</item>
<item name="colorSecondaryVariant">@color/white</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="windowNoTitle">true</item>
</style>
</resources>
xml
<android.widget.CheckBox
android:id="@+id/cb_append_newline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="补 \\r\\n" />
问题原因
- 在 Android 开发中,在应用上述主题的情况下,CheckBox 控件在勾选状态下不显示样式
-
上述主题将几乎所有颜色都设置为了白色,该项目中 CheckBox 使用了 colorSecondary 做为勾选框的颜色
-
而背景也因为是白色或浅色,所以白色的勾选框在白色背景上就像是不显示一样
处理策略
- 在 CheckBox 上添加
app:buttonTint属性,覆盖全局的主题颜色设置
xml
<android.widget.CheckBox
android:id="@+id/cb_append_newline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:checked="true"
android:text="补 \\r\\n" />