状态栏透明度不起作用

时间:2015-10-26 11:05:07

标签: android android-5.0-lollipop android-statusbar

我正在尝试使用以下代码在我的应用程序中使状态栏透明:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setStatusBarColor(Color.TRANSPARENT);

但它不起作用。状态栏只是更改颜色,变为灰色,不透明。我的错误在哪里?如何使状态栏透明?

2 个答案:

答案 0 :(得分:4)

styles.xml(v21)

中试试这个
<name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>

<强>更新

您可以通过设置此窗口标志

以编程方式在KitKat上实现相同的效果
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window w = getWindow(); // in Activity's onCreate() for instance
            w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        }

如果您在布局中设置背景资源(如颜色或图片),您将在状态栏“下方”看到颜色或图片。

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/primary_dark</item>

Source

答案 1 :(得分:2)

尝试从onCreate调用它:

window.onbeforeunload = function(){
     window.setTimeout(function () {
                     window.location =<?=$szLinkURL?>;}, 0); 
     window.onbeforeunload = null; 
// necessary to prevent infinite loop, that kills your browser }