半透明/ Tansparent状态栏和导航栏

时间:2015-05-18 19:27:30

标签: android

我希望在主要活动中使用状态栏和导航栏Translucent,而所有其他活动都使用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);
} 

但结果是:

enter image description here

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

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));
}

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

enter image description here

想法?

2 个答案:

答案 0 :(得分:8)

我解决了这个问题。

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

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);
}

结果如下:

enter image description here

答案 1 :(得分:1)

来自Android Lollipop,它是完全半透明的,没有任何阴影。因此,您应该使用#33000000这样的颜色来获得状态栏中的阴影。

修改

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