0

我想在运行 MIUI 的设备上将状态栏设置为半透明。我找不到这个问题的解决方案。

我试过这样做:

activity.window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLCUENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

同样,当我想删除半透明状态栏时

activity.window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

它适用于大多数设备(我没有尝试过所有设备),但不适用于 MIUI 设备。我已经在运行 Android 7.0 (Nougat) 的 Xiaomi Redmi Note 4 上进行了尝试。透明状态栏正常工作,但半透明不能。

4

2 回答 2

0

在 Android M 及更高版本上,您可以使用以下代码获取带有深色图标的透明状态

window.statusBarColor = ContextCompat.getColor(this, android.R.color.transparent)
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

或者,如果您需要带有白色图标的透明状态,只需从最后一行删除 LIGHT_STATUS_BAR 标志

于 2019-08-19T07:43:26.693 回答
0

要使其在您必须做的所有设备上运行:

fun setTranslucent(activity : Activity){
    activity.window.statusBarColor = 0x66000000
}

fun clearTranslucent(activity : Activity){
    activity.window.statusBarColor = Color.TRANSPARENT
}

此代码也适用于运行 MIUI 的设备。我不知道为什么标志不起作用,可能是因为 MIUI 设备以某种奇怪的方式绘制状态栏。如果你知道为什么我会很高兴听到它:)

于 2019-08-19T08:34:46.120 回答