uni-app 【报Bug】targetsdkVersion设置34后,@media (prefers-color-scheme: dark) 样式判断无效
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.xml
和res/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官方文档和社区获取更多帮助。