我想将导航栏完全透明,如下图所示。
我尝试了<item name="android:windowTranslucentNavigation">true</item>
,但它并不完全透明(更像是50%)。
有解决方案吗?因为我没有发现它,但我看到一些使用它的应用程序,如Nova。甚至在googles指南https://material.google.com/layout/structure.html#structure-system-bars
中也是如此答案 0 :(得分:2)
在您的活动的onCreate中使用以下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
并在你的styles.xml中:
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentNavigation">false</item>
答案 1 :(得分:1)
您可以使用FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
实现这一目标。文档说明:
表示此窗口负责绘制的标志 系统栏的背景。如果设置,则绘制系统条 透明背景和此窗口中的相应区域 填充
getStatusBarColor()
和getNavigationBarColor()
中指定的颜色onCreate
。
在您的活动getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
:
each[1] == '-'
答案 2 :(得分:0)
试试这个
<resources>
<style name="Theme" parent="android:Theme.Material.Wallpaper.NoTitleBar">
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
答案 3 :(得分:0)
我受到Google Keep应用的启发,该应用具有类似如下所示的实现方式:
因此,我试图找到有关如何实现此目标的适当信息,但不幸的是没有找到任何东西,而且上述答案均无效。因此,我决定尝试与navigationBar
Android Studio建议的所有标志。
让我详细解释一下:
在使用浅色主题时,只有android:navigationBarColor
不会做任何事情。但是在黑暗主题下,它将起作用。
将windowTranslucentNavigation
设置为true
会做两件事:
navigationBarColor
并强制其透明。下面的图片如下:
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
(按照@Frankenxtein的回答),则会得到以下结果:这在某种程度上接近期望的结果,但这不是因为它在navbar下方绘制了活动组件。而且还会弄乱您的填充和边距(请参见完整屏幕截图here)。而且,您必须为每个活动执行此操作,还必须调整当前利润。
这可以在不影响当前布局的情况下实现。要在Dark主题中执行此操作,就没有问题,只需设置android:navigationBarColor
就可以完成。
不过,我们的目标是使用轻主题let(#FFFFFF)来实现。将android:windowLightNavigationBar
与需要使用API 27或更高版本的android:navigationBarColor
一起使用,将得到我们想要的。
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightNavigationBar">true</item>
在我的应用案例colorPrimaryDark
中,浅色主题为#FFFFFF,深色主题为dracula,您还可以为此声明一个新变量。结果如下:
深色主题
此处android:navigationBarColor
设置导航栏的背景颜色。并且android:windowLightNavigationBar
设置深色按钮颜色并表示背景是浅色,正如您从其名称中可以理解的那样。
希望这会有所帮助!
答案 4 :(得分:0)
它适用于 android >= 10 你可以试试默认颜色android
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowLightNavigationBar">true</item>
<item name="android:windowTranslucentNavigation">true</item>
顺便说一下,你可以试试这个
<item name="android:fitsSystemWindows">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>