如何创建一个完全透明的导航栏?

1 android android-layout material-design

我想将导航栏更改为完全透明,如下图所示。

我试过了,<item name="android:windowTranslucentNavigation">true</item>但它不是完全透明的(更像是 50%)。

有解决办法吗?因为我一无所获,但我看到了一些像 Nova 这样使用它的应用程序。它甚至在谷歌指南https://material.google.com/layout/structure.html#structure-system-bars

透明导航

cha*_*uze 6

我的灵感来自 Google Keep 应用程序,它具有类似的实现,如下所示:

在此处输入图片说明

所以我试图找到一个关于如何实现这件事的合适的帖子,但不幸的是什么也没找到,而且上面的答案也不起作用。所以我决定尝试所有与navigationBarAndroid Studio相关的标志。

让我详细解释一下:

  1. 只有android:navigationBarColor在使用浅色主题时才不会做任何事情。但是在黑暗主题上,它会起作用。

  2. 设置windowTranslucentNavigationtrue将做两件事:

    • 在软导航栏下方绘制活动
    • 覆盖navigationBarColor并强制它是透明的。

这将如下图所示:

在此处输入图片说明

  1. 如果您使用FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS(按照@Frankenxtein 的回答),您将得到以下结果:

在此处输入图片说明

这在某种程度上接近预期的结果,但这不是因为它在导航栏下方绘制活动组件。而且它弄乱了您的填充和边距(请参阅此处的完整屏幕截图)。而且,您必须为每项活动都这样做,并且还必须调整当前的保证金。

解决方案

这可以在不影响当前布局的情况下实现。要在黑暗主题中执行此操作,您没有问题,只需设置即可android:navigationBarColor

然而,我们在这里的目标是使用轻主题 let (#FFFFFF) 来实现。使用android:windowLightNavigationBar它需要 API 27 或更高版本 android:navigationBarColor将产生我们想要的结果。

<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightNavigationBar">true</item>
Run Code Online (Sandbox Code Playgroud)

对于我的应用案例colorPrimaryDark,浅色主题中的 #FFFFFF 和深色主题中的德古拉,您还可以为此声明一个新变量。产生以下结果:

轻主题 在此处输入图片说明

黑暗主题

在此处输入图片说明

android:navigationBarColor是设置导航栏的背景颜色。并android:windowLightNavigationBar设置深色按钮颜色并指示背景为浅色,正如您从它的名称中可以理解的那样。

希望这可以帮助 !