我希望在运行MIUI的设备上将状态栏设置为半透明。我找不到解决这个问题的办法。
我试过这样做:
activity.window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLCUENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)类似地,当我要删除半透明状态栏时
activity.window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)它在大多数设备上都能工作(我还没有试过所有这些设备),但是它不适用于MIUI设备。我已经在运行Android7.0的小米Redmi Note 4上试过了。透明状态栏正常工作,但半透明不工作。
发布于 2019-08-19 08:34:46
要使它在所有设备上工作,您必须这样做:
fun setTranslucent(activity : Activity){
activity.window.statusBarColor = 0x66000000
}
fun clearTranslucent(activity : Activity){
activity.window.statusBarColor = Color.TRANSPARENT
}此代码也适用于运行MIUI的设备。我不知道为什么标志不能工作,可能是因为MIUI设备以某种奇怪的方式绘制状态栏。如果你知道为什么我会非常高兴地听到它:)
发布于 2019-08-19 07:43:26
在Android及以上版本上,您可以使用下面的代码获得带有暗图标的透明状态
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标志即可。
https://stackoverflow.com/questions/57551597
复制相似问题