看(很抱歉SOF不让我上传图片)
这就是我正在努力实现的目标。我有一个地图视图,我希望状态栏是透明的,让地图看起来像是在状态栏的文本下面(就像在uber应用程序中一样)。我使用
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
/*,WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS*/);这个标签来做这件事。但问题是我也有4个按钮(如底部导航栏)在底部。当我使用这个标签时,这些按钮就会出现在导航栏后面(软键)。
我想如果我使用两种不同的布局就可以了,比如一种布局适用于带有NavBar的手机,另一种适用于带有硬件按键的手机。但我就是不知道该怎么做。我试过使用这个函数,但要么它不工作,要么我实现错误,请帮助。
public boolean hasNavBar (Resources resources) {
int id = resources.getIdentifier("config_showNavigationBar", "bool", "android");
return f= id > 0 && resources.getBoolean(id);
}然后使用if(f==true),else来更改布局和java文件,但这总是给出false。
发布于 2019-06-29 05:54:56
尝试使用此选项,而不是LAYOUT_NO_LIMITS
Window w = getWindow();
w.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
w.setStatusBarColor(0x00000000);您还需要确保在您希望位于状态栏后面的视图中将android:fitsSystemWindows设置为false。我不得不尝试这些布局标志的几个不同版本,这就是对我有效的方法。
对于没有导航栏按键的手机,你不应该需要不同的布局,布局将填满屏幕,直到软导航栏,或者如果手机没有导航栏,则一直到底部。
https://stackoverflow.com/questions/56809900
复制相似问题