3

我试过了

statusBarColor设置为transparent,但它会留下阴影

windowTranslucentStatus设置为true,但会留下阴影

将上述属性与fitsSystemWindow混合并匹配...没有成功

执行以下操作达到完全透明状态的目标......但也使导航栏完全透明

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

如何在不触摸导航栏的情况下仅使状态栏 100% 透明

最小SDK:21

目标:26

编译 26

Android studio 3.0 预览版(最新截至 2017 年 9 月 6 日)

4

3 回答 3

2

我认为您不能使状态栏 100% 透明,因为活动有自己的窗口背景(默认背景为白色,您可以使用 getWindow().setBackgroundDrawableResource(int resID) 或 getWindow().setBackgroundDrawable(Drawable drawable) 设置窗口背景)

您可以在下面的代码中显示的 setContentView() 之后为状态栏设置颜色并以十六进制形式设置颜色不透明度。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().setStatusBarColor(Color.parseColor("#00FFFFFF"));
    }

//Here "#00FFFFFF" means opacity is 0% (first two digits 00) and colour is white (next FFFFFF character).

或者在 styles.xml 中(仅限棒棒糖后版本。兼容性可能会受到影响)

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

要设置不透明度,请参阅链接

于 2017-09-07T07:32:20.410 回答
0

我只是在相同的条件下做了同样的事情

您对 FLAG_LAYOUT_NO_LIMITS 的看法是对的,但它就是这样(kotlin 中的代码)

//onCreate
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
toolbar.setPadding(0, getStatusBarHeight(), 0, 0)

获取状态栏高度:

private fun getStatusBarHeight(): Int {
    var result = 0
    val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
    if (resourceId > 0) {
        result = resources.getDimensionPixelSize(resourceId)
    }
    return result
}

以及如何返回导航栏的方式 - 将其放入您的样式中:

    <item name="android:windowTranslucentStatus">false</item>
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
于 2018-03-15T09:27:36.603 回答
0

在状态栏中使用此十六进制颜色 #00000000

于 2017-09-07T07:15:56.280 回答