Android 深色模式部分原生主题控件显示问题

今天遇到一个RadioButton不显示问题,我试了好几个手机都没问题,然后就让客户把关于手机的一些信息截屏给我,发现他是深色模式,后面我也把Android 10 以上的手机改成深色模式,发现也不显示,但是点击控件的位置还是能出来的选中的效果。

问题

Android Studio 4.1以上版本创建项目时默认有两个主题,但是两个使用的都是Theme.MaterialComponents.DayNight主题

    <style name="Theme.Test" parent="Theme.MaterialComponents.DayNight">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</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="android:windowFullscreen">true</item>
        <item name="android:colorAccent">@color/blue</item>
    </style>

但是这个主题有个问题想改一些控件的样式不好改,比如自定义Button设置了background一点作用都没。后面我把主题改成Theme.MaterialComponents.DayNight.NoActionBar.Bridge

    <style name="Theme.Test" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</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="android:windowFullscreen">true</item>
        <item name="android:colorAccent">@color/blue</item>
    </style>

虽然这个主题能自定义样式,但是我的APP是没有做深色模式适配的,导致深色模式下一些原生主题控件不显示。

解决

最后把深色主题values-night-themes.xml改成Theme.MaterialComponents.Light.NoActionBar.Bridge

    <style name="Theme.Test" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_200</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/black</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_200</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="android:windowFullscreen">true</item>
        <item name="android:colorAccent">@color/blue</item>
    </style>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容