首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >半透明状态棒Miui器件

半透明状态棒Miui器件
EN

Stack Overflow用户
提问于 2019-08-19 06:41:13
回答 2查看 1.8K关注 0票数 0

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

我试过这样做:

代码语言:javascript
复制
activity.window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLCUENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

类似地,当我要删除半透明状态栏时

代码语言:javascript
复制
activity.window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

它在大多数设备上都能工作(我还没有试过所有这些设备),但是它不适用于MIUI设备。我已经在运行Android7.0的小米Redmi Note 4上试过了。透明状态栏正常工作,但半透明不工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-19 08:34:46

要使它在所有设备上工作,您必须这样做:

代码语言:javascript
复制
fun setTranslucent(activity : Activity){
    activity.window.statusBarColor = 0x66000000
}

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

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

票数 0
EN

Stack Overflow用户

发布于 2019-08-19 07:43:26

在Android及以上版本上,您可以使用下面的代码获得带有暗图标的透明状态

代码语言:javascript
复制
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标志即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57551597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档