此代码在 API 30 中已弃用。知道如何更新此代码吗?
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
}
}
Run Code Online (Sandbox Code Playgroud)
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)
}
Run Code Online (Sandbox Code Playgroud)
这些解决方案仅适用于 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);
}
Run Code Online (Sandbox Code Playgroud)
旧答案:
在 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);
Run Code Online (Sandbox Code Playgroud)
要清除这一点,请使用
wic.setSystemBarsAppearance(0, APPEARANCE_LIGHT_STATUS_BARS);
Run Code Online (Sandbox Code Playgroud)
小智 0
是的,现在由于它已被弃用,您可以使用:
window.setDecorFitsSystemWindows(false)
Run Code Online (Sandbox Code Playgroud)
然后确保通过将以下样式添加到应用程序主题来使状态栏透明
<item name="android:navigationBarColor">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |