如何在地图视图中获得透明的状态栏?

时间:2019-06-28 15:54:29

标签: java android android-layout tags statusbar

看到(抱歉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。

1 个答案:

答案 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>