【问题标题】:Translucent/Tansparent status bar and navigation bar半透明/透明状态栏和导航栏
【发布时间】:2015-05-18 19:27:29
【问题描述】:

我想在我的主要活动上设置状态栏和导航栏半透明,而所有其他活动都使用 Material Design。

到目前为止,我得到的是:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Window window = this.getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
} 

但结果是:

我什至尝试将颜色设置为透明:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = this.getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(android.R.color.transparent));
    window.setNavigationBarColor(getResources().getColor(android.R.color.transparent));
}

但我没有得到让导航按钮和状态栏上的图标可见的渐变阴影:

想法?

【问题讨论】:

    标签: android


    【解决方案1】:

    我解决了这个问题。

    我创建了一个模拟我正在寻找的阴影并将其作为墙纸的可绘制对象,同时使状态栏和导航栏透明:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = this.getWindow();
        Drawable background = this.getResources().getDrawable(R.drawable.background);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(getResources().getColor(android.R.color.transparent));
        window.setNavigationBarColor(getResources().getColor(android.R.color.transparent));
        window.setBackgroundDrawable(background);
    }
    

    结果如下:

    【讨论】:

      【解决方案2】:

      来自 Android Lollipop,它是完全半透明的,没有任何阴影。所以你应该做一个像#33000000这样的颜色来在状态栏中获得一个阴影。

      编辑

      我认为您只能为状态栏设置颜色。但是您可以添加带有渐变可绘制对象的 ImageView,并且仅在您使用棒棒糖时才显示它。状态栏高 25dp。我认为这也有一个属性,但我不知道。这样您就可以在状态栏中模拟渐变。

      【讨论】:

      • #33000000 只是给了我一个更透明的状态栏(全黑的 13% 透明度),而不是我正在寻找的渐变色。
      • @Jones 这是你在棒棒糖上使用的:window.setStatusBarColor(getResources().getColor(android.R.color.transparent));,它是完全透明的 (#00000000) 我的答案确实是黑色的 13% 透明度,它会产生阴影。这不是你的意思吗?
      • 不,我正在寻找一种渐变色,即我们可以在“桌面”上看到的那种。对不起,如果我不清楚。
      • @Jones 喜欢 KitKat,你的意思是对吗?我认为你只能设置颜色。但是您可以添加带有渐变可绘制对象的ImageView,并且仅在您使用棒棒糖时才显示它。状态栏高 25dp。我觉得这个也有一个属性,但是我不知道
      • 是的,我的意思是,最终我让栏保持透明并放置模拟阴影的壁纸,因为您无法为状态栏和操作栏放置可绘制背景。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多