uni-app 【报Bug】targetsdkVersion设置34后,@media (prefers-color-scheme: dark) 样式判断无效

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 【报Bug】targetsdkVersion设置34后,@media (prefers-color-scheme: dark) 样式判断无效

【报Bug】targetsdkVersion设置34,@media (prefers-color-scheme: dark) 样式判断无效,本地和模拟器显示都正常,打包安装就不行

第一张模拟器,真实效果
第二张图是安装到手机的,显示不正常

alt text

alt text


3 回复

HBuilderX 4.31.2024102414-alpha 已修复。


感谢反馈,已确认Android target 34问题,因 Android 系统调整 webview 主题默认跟随系统主题

针对您提到的uni-app中在targetSdkVersion设置为34后,@media (prefers-color-scheme: dark)样式判断无效的问题,这通常与系统适配及权限设置有关。在Android 12(API级别31)及以上版本中,应用需要明确声明对暗模式的支持,并且可能涉及到对应用主题和样式的调整。以下是一些可能的解决方案和代码示例,供您参考和调整。

1. 确保AndroidManifest.xml中声明权限

首先,确保您的AndroidManifest.xml文件中已经声明了对暗模式的支持。虽然这不是一个权限声明,但它是系统适配的基础。

<application
    ...
    android:forceDarkAllowed="true" <!-- 允许应用使用系统暗模式 -->
    ... >
    ...
</application>

2. 更新应用主题以支持暗模式

res/values/styles.xmlres/values-night/styles.xml中定义日夜主题,确保应用能够正确响应系统暗模式的切换。

res/values/styles.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Light theme settings -->
    </style>
</resources>

res/values-night/styles.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Dark.DarkActionBar">
        <!-- Dark theme settings -->
    </style>
</resources>

3. 使用CSS媒体查询判断暗模式

在uni-app中,您可以通过CSS媒体查询来动态调整样式以适应暗模式。以下是一个简单的示例:

/* 默认样式 */
body {
    background-color: white;
    color: black;
}

/* 暗模式样式 */
@media (prefers-color-scheme: dark) {
    body {
        background-color: black;
        color: white;
    }
}

4. 检查并更新uni-app和依赖库

确保您的uni-app框架及其依赖库是最新版本,因为新版本可能已经修复了与暗模式相关的bug。

5. 调试和测试

在真机上测试您的应用,观察在不同targetSdkVersion和Android版本下暗模式的表现。使用Android Studio的Layout Inspector工具可以帮助您更深入地了解布局和样式问题。

通过上述步骤,您应该能够解决targetSdkVersion设置为34后@media (prefers-color-scheme: dark)样式判断无效的问题。如果问题依旧存在,建议检查具体的Android设备兼容性问题或查阅uni-app官方文档和社区获取更多帮助。

回到顶部