设置状态栏颜色后,透明的状态栏导航抽屉

4

我正在尝试使用在github上找到的一个模板来开发一个带有导航抽屉的应用程序。

style.xml文件中,我有以下内容:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#ff0000</item>
    <item name="colorPrimaryDark">#0000ff</item>

主要

导航抽屉中的状态栏没有问题。 主要

当我点击按钮时,它运行以下命令: getWindow().setStatusBarColor(Color.GREEN); 主要

现在导航抽屉中的状态栏颜色不再是半透明的。 主要

如何将状态栏颜色恢复为半透明?

1个回答

0

区别在于 XML 定义的颜色 colorPrimarycolorPrimaryDark 并不直接用于设置状态栏颜色。

实际上,状态栏始终完全透明,只有底层的 View 被着色。这就是为什么左侧可以与右侧有不同的颜色(请查看第二个截图)。如果现在调用 getWindow().setStatusBarColor(..),您确实会直接着色状态栏并覆盖两个 Views 的颜色。因此,它需要保持透明!

你真正想要做的是改变状态栏下面的视图颜色,这可以通过ScrimInsetsFrameLayout类来实现。
请查看这个问题您提供的库中的这个类
在那里,您应该找到所有必要的信息,以仅更改所需区域的颜色。


如果你只是想重置颜色:

getWindow().setStatusBarColor(Color.TRANSPARENT);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接