安卓应用设置全屏后,如何移除导航栏位置的阴影?
解决全屏模式下导航栏位置阴影问题
我之前也碰到过一模一样的问题,导航栏隐藏后留下的阴影确实挺影响全屏体验的。你可以试试以下几个方案,应该能彻底解决:
1. 补充SystemUiVisibility布局相关Flag
你目前的代码只处理了UI的隐藏,还需要添加布局延伸的Flag,让应用内容可以覆盖到系统UI原本的位置,这样阴影区域就会被你的内容填充。修改后的代码如下:
getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY );
2. 添加Window的FLAG_LAYOUT_NO_LIMITS
这个Flag会让你的窗口完全忽略系统UI的边界限制,直接延伸到屏幕的最边缘,从根源上消除阴影存在的空间:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS );
3. 检查并修改主题配置(可选)
如果上面的方法还没解决问题,可能是你的Activity主题自带了窗口阴影或背景设置。可以在styles.xml中对应主题里添加以下配置:
<item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@android:color/transparent</item>
这会移除窗口默认的阴影层,并将窗口背景设为透明,确保全屏模式下没有多余的视觉元素。
这几个方案组合使用,基本就能彻底清除导航栏位置的阴影了,我之前用这个方法解决过好几个类似的问题,亲测有效。
内容的提问来源于stack exchange,提问作者Ahmet AY
相关产品推荐
相关产品推荐

