如何在Android Studio中移除顶部刘海栏且不删除ActionBar
解决方案(不删除ActionBar处理刘海栏异常问题)
你遇到的是安卓系统状态栏(即你提到的刘海栏)显示配置异常问题,不需要删除ActionBar即可修复,以下是不同开发场景的操作步骤:
场景1:原生View体系开发
- 第一步:修改App主题配置,在
res/values/themes.xml中找到你的应用使用的主题节点,添加如下配置:
<!-- 允许内容延伸到刘海区域 --> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <!-- 状态栏设置为透明 --> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
- 第二步:在对应Activity的
onCreate方法setContentView执行前添加窗口配置:
// Kotlin 代码 window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
// Java 代码 getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- 第三步:给布局根节点添加
android:fitsSystemWindows="true"属性,即可保证ActionBar不会被刘海区域遮挡。
场景2:Jetpack Compose 开发
- 第一步:Activity的窗口配置和上述View体系的配置保持一致
- 第二步:在
setContent代码块中添加如下逻辑隐藏状态栏:
val systemUiController = rememberSystemUiController() SideEffect { // 隐藏状态栏,同时保留导航栏正常显示 systemUiController.isStatusBarVisible = false systemUiController.isNavigationBarVisible = true }
- 第三步:正常使用
TopAppBar组件即可,不需要额外修改ActionBar相关配置,内容会自动从刘海区域下方开始渲染。
如果你不需要完全隐藏状态栏,只是想解决白色背景看不到通知图标的问题,仅把
statusBarColor设置为和ActionBar相同的颜色即可,系统会自动把通知图标切换为和背景反差的配色,不需要隐藏状态栏。
内容的提问来源于stack exchange,提问作者ROHITH SPEAKS
相关产品推荐
相关产品推荐

