Android开发:ActionBar下方存在无法隐藏的空白区域如何解决
问题原因
ActionBar下方的空白和host fragment无关,是布局文件里手动设置的顶部内边距导致的。
你的activity_main.xml根布局属性中存在如下配置:
android:paddingTop="?attr/actionBarSize"
该属性会给整个页面根容器顶部强制预留与ActionBar高度相等的内边距,这个内边距是硬编码在布局中的,和ActionBar的显示/隐藏状态没有绑定关系,哪怕你调用方法隐藏了ActionBar,这块预留的内边距依然存在,就形成了你看到的空白区域。
修复方案
- 直接删除
activity_main.xml根ConstraintLayout节点下的android:paddingTop="?attr/actionBarSize"属性,顶部空白会立即消失。 - 修正NavHostFragment的底部约束避免内容遮挡:你当前NavHostFragment的底部约束为
app:layout_constraintBottom_toBottomOf="@+id/nav_view",会导致Fragment内容延伸到底部导航栏下方被遮挡,将该属性修改为app:layout_constraintBottom_toTopOf="@+id/nav_view",让Fragment下边界对齐到底部导航栏上沿即可。 - 如果你需要彻底隐藏ActionBar,取消MainActivity.java中
//getSupportActionBar().hide();这行的注释即可,不需要使用设置全屏窗口Flag的写法,避免后续出现状态栏适配问题。
内容的提问来源于stack exchange,提问作者Jan Pieter Hammink
相关产品推荐
相关产品推荐

