我正在使用以下代码/标志来隐藏底部的导航栏,但问题是我的活动视图本身不会重新绘制/刷新/重新布局以反映此更改。
id()
我的活动代码
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(uiOptions);
}
RootRelativeLayout.requestLayout();
即使我在父级RelativeLayout上调用requestLayout(),内部的RelativeLayout仍会保留在其位置,就好像导航栏仍然存在并且不会掉到屏幕底部一样。
我找到了解决此问题的方法,但它也引起了另一个问题。
我来到的解决方案是将android:fitsSystemWindows设置为false而不是true。
但这会导致一个问题,我的活动的顶部对齐视图位于状态栏后面,我唯一的解决方案是将顶部填充设置为状态栏的高度。
答案 0 :(得分:0)
对于将来的搜索者,解决方案是将fitsSystemWindows设置为false。
android:fitsSystemWindows="false"
答案 1 :(得分:0)
当过多的全屏标志传递给setSystemUiVisibility时,会发生这种情况。有了这个组合,我没有观察到问题:
myRelativeLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
当我确实遇到问题时,android:fitsSystemWindows =“ false”未能解决。