如何解决SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 和 FLAG_TRANSLUCENT_STATUS 已弃用
private fun setSystemBarLight(act: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val view: View = act.findViewById(android.R.id.content)
var flags: Int = view.systemUIVisibility
flags = flags or View.SYstem_UI_FLAG_LIGHT_STATUS_BAR
view.systemUIVisibility = flags
}
}
FLAG_TRANSLUCENT_STATUS 在此处也已弃用。我需要帮助修复此警告。
private fun setSystemBarColor(act: Activity,color: String?) {
val window: Window = act.window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYstem_BAR_BACKGROUNDS)
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.statusBarColor = Color.parseColor(color)
}
解决方法
这些解决方案仅适用于 API > 23。
更新:
按照评论部分的建议,您可以按如下方式使用 WindowInsetsControllerCompat。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Window window = getWindow();
View decorView = window.getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window,decorView);
wic.setAppearanceLightStatusBars(true); // true or false as desired.
// And then you can set any background color to the status bar.
window.setStatusBarColor(Color.WHITE);
}
旧答案:
在 API 级别 30 setSystemUiVisibility() 中已弃用。因此,您应该使用 WindowInsetsController。下面的代码将使状态栏亮起,这意味着状态栏中的文本将为黑色。
Window window = getWindow();
View decorView = window.getDecorView();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
WindowInsetsController wic = decorView.getWindowInsetsController();
wic.setSystemBarsAppearance(APPEARANCE_LIGHT_STATUS_BARS,APPEARANCE_LIGHT_STATUS_BARS);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
// set any light background color to the status bar. e.g. - white or light blue
window.setStatusBarColor(Color.WHITE);
要清除它,请使用
wic.setSystemBarsAppearance(0,APPEARANCE_LIGHT_STATUS_BARS);
,
现在是的,因为它已被弃用,您可以使用:
window.setDecorFitsSystemWindows(false)
然后通过将以下样式添加到您的应用主题来确保状态栏也透明
<item name="android:navigationBarColor">@android:color/transparent</item>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。