如何去除Activity底部边距并实现全屏显示?
解决Activity全屏显示问题
这主要是主题配置问题,通过修改主题属性并配合少量代码就能实现Activity铺满整个屏幕的需求,具体操作如下:
1. 修改主题配置
将当前主题的父类替换为不带ActionBar的版本,并添加全屏相关属性,修改后的主题代码如下:
<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.DrinkTracker" parent="Theme.MaterialComponents.DayNight.NoActionBar"> <!-- 隐藏顶部状态栏 --> <item name="android:windowFullscreen">true</item> <!-- 让内容延伸至屏幕边缘(包括刘海/挖孔区域) --> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <!-- 取消系统栏背景绘制,避免残留黑边 --> <item name="android:windowDrawsSystemBarBackgrounds">false</item> </style> </resources>
2. 可选:代码强制全屏(适配特殊场景)
如果主题配置后仍存在底部黑边,可在Activity的onCreate方法中添加代码,强制启用沉浸式全屏模式:
Kotlin 版本
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 设置沉浸式全屏,隐藏状态栏和导航栏 window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) setContentView(R.layout.your_activity_layout) }
Java 版本
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置沉浸式全屏,隐藏状态栏和导航栏 getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); setContentView(R.layout.your_activity_layout); }
关键说明
- 替换父主题为
NoActionBar可直接移除顶部的应用名称栏; windowLayoutInDisplayCutoutMode用于适配异形屏,确保内容完全覆盖屏幕边缘;IMMERSIVE_STICKY模式下,用户滑动屏幕会临时显示系统栏,松开后自动隐藏,不影响全屏体验。
内容的提问来源于stack exchange,提问作者yambo
相关产品推荐
相关产品推荐

