Android 开发问题:全局的主题颜色设置,导致 CheckBox 控件在勾选状态下不显示样式

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 控件在勾选状态下不显示样式
  1. 上述主题将几乎所有颜色都设置为了白色,该项目中 CheckBox 使用了 colorSecondary 做为勾选框的颜色

  2. 而背景也因为是白色或浅色,所以白色的勾选框在白色背景上就像是不显示一样

处理策略
  • 在 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" />
相关推荐
CoderYanger1 小时前
Java EE:5.网络原理-初识
java·网络·面试·职场和发展·java-ee·智能路由器·学习方法
Cloud_Shy6181 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 51)
开发语言·人工智能·笔记·python·学习方法
AI+程序员在路上1 小时前
CSP、PP、PV、HM 在 CiA402 标准下的差异解析
linux·c语言·开发语言·嵌入式硬件
nix.gnehc1 小时前
Python 并发深度解析
服务器·开发语言·python
我是一颗柠檬1 小时前
【Java项目技术亮点】Leaf号段模式双Buffer优化
java·开发语言·分布式·后端·架构
Kapaseker1 小时前
一个丝滑的数字计数器,讲清楚 AnimatedContent 怎么用
android·kotlin
Cx330❀1 小时前
【MySQL基础】详解MySQL数据类型:底层原理、越界测试与最佳实践
linux·开发语言·数据库·c++·mysql
Volunteer Technology1 小时前
Flink 时间、窗口及操作(二)
java·python·flink
星恒随风1 小时前
C++ string 入门(一)
开发语言·c++·笔记·学习