看到(抱歉SOF不允许我上传图片)
这是我要实现的目标。我有一个地图视图,我希望状态栏是透明的,以使地图看起来像在状态栏的文本下方(例如在uber应用中)。我用
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
/*,WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS*/);
此标记可实现此目的。 但是问题是我在底部也有4个按钮(例如底部导航栏)。当我使用该标签时,这些按钮位于导航栏(软件键)的后面。
我认为,如果我使用2种不同的布局,它将可以正常工作,例如一种布局用于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。
答案 0 :(得分:0)
尝试使用此方法代替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。我不得不尝试这些布局标志的几种不同版本,这对我来说很有效。
不带导航键的电话不需要使用不同的布局,布局将填满整个屏幕,直至软导航栏,或者如果电话没有导航条,则将其填满到底部。< / p>