排查 Android 深色主题下的标题栏冲突
246 字
1 分钟
排查 Android 深色主题下的标题栏冲突
现象
切换到深色主题后,页面可能出现重复标题栏、ActionBar 与自定义 Toolbar 冲突,或 requestFeature() 相关异常。
快速结论
windowActionBar 和 windowNoTitle 控制窗口标题栏,不是“开启深色模式”的配置。如果应用自行提供 Toolbar,应直接继承 NoActionBar 主题;如果使用系统 ActionBar,则不要关闭它。
推荐修复
Material Components 项目可以在基础主题中选择无 ActionBar 变体:
<style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- 应用自己的颜色和组件样式 -->
</style>
维护旧主题时,也可以显式设置:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
这两个属性应放在基础主题中,确保 values/themes.xml 与 values-night/themes.xml 继承关系一致,避免明暗主题行为不同。
验证
分别在浅色、深色和“跟随系统”模式启动应用,检查页面只有一个标题栏、状态栏文字对比度足够,并确认旋转屏幕后主题保持一致。
参考
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
排查 Android 深色主题下的标题栏冲突
https://blog.mintalix.com/posts/study-kotlin-about-3/相关文章智能推荐
1
从 Kotlin synthetic 迁移到 View Binding
android-development解释 Kotlin Android Extensions synthetic 视图访问为何消失,并使用官方支持的 View Binding 完成替代。
2
在旧版 Android 界面中使用 ExpandableListView
android-development在不依赖已弃用 ExpandableListActivity 的前提下,用 ExpandableListView 和 BaseExpandableListAdapter 实现两级列表。
3
Kotlin 速查:闭区间、半开区间与 JSON 根节点
android-development比较 Kotlin 的闭区间与半开区间写法,并说明 JSON 是否保留根节点包装取决于目标数据模型。
4
Kotlin 速查:类名、可空类型与视图引用
android-development整理 Kotlin 中获取运行时类名、声明可空类型、安全转换,以及在 Android 中引用 View 的推荐写法。
5
使用 Activity Result API 获取页面返回结果
android-development用 AndroidX Activity Result API 替代 startActivityForResult,完成结果注册、页面启动、数据返回与生命周期验证。
随机文章随机推荐


