【问题标题】:How to i get transparent status bar in map view?如何在地图视图中获得透明状态栏?
【发布时间】:2019-06-28 15:54:29
【问题描述】:

看(抱歉 SOF 不让我上传图片)

这就是我想要达到的目标。我有一个地图视图,我希望状态栏是透明的,以使地图看起来像是在状态栏的文本下(如在 uber 应用程序中)。我用

 getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
    /*,WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS*/);

这个标签来做到这一点。 但问题是我在底部也有 4 个按钮(如底部导航栏)。当我使用该标签时,这些按钮位于导航栏(软件键)后面。

我认为如果我使用 2 种不同的布局,它会起作用,例如一种布局用于带有导航栏的手机,另一种用于带有硬件键的手机。但我只是不知道怎么做。我已经尝试使用此功能,但它不起作用或我执行错误请帮助。

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。

【问题讨论】:

标签: java android android-layout tags statusbar


【解决方案1】:

试试这个而不是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。我不得不尝试这些布局标志的几个不同版本,这对我有用。

对于没有导航栏键的手机,您不应该需要不同的布局,布局将填满屏幕直到软导航栏,或者如果手机没有导航栏,则一直到底部。

【讨论】:

  • 它使状态栏变为白色,文本也变为白色,而实际上我已将状态栏文本的颜色更改为黑色。
  • 见我有一个地图片段,我想混合到顶部,通知文本应该浮动在它上面。有点像在 UBER android 应用中
  • fitsSystemWindows 对于每个父布局是否为假?例如,如果您有包含 map_view 或其他内容的 activity_main,则两个文件中的父布局都需要 fitSystemWindows=false
  • 好的,我尝试了您的解决方案的不同迭代,这就是我发现的(剧透!仍然没有运气)。首先,(顺便说一句,我还有一个导航抽屉)当我在我的主要活动中添加 w.setStatusBarColor 然后在 XML 文件中添加 fitSystem false (如导航标题、抽屉等基本上所有链接到我的主要活动布局)结果与使用 setNoLimit tag 相同,这意味着我的底部按钮位于导航键下方。我试图在地图片段中添加 fitSys false 但它没有任何效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多