在黑色和白色之间切换状态栏文本颜色

问题描述 投票:0回答:2

该应用程序以状态栏颜色开头:

背景白色,文字是黑色的。

进入模态弹出屏幕时,状态栏会变为后退,并带有白色文本:

window?.setStatusBarColor(Color.BLACK);
activity?.window?.decorView?.systemUiVisibility = SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR

作品!

接下来,在模态弹出屏幕关闭时,我希望状态栏恢复正常:

背景白色和黑色文本

没有运气。

我尝试了什么?这个:

window?.setStatusBarColor(Color.BLACK); // This really does work
activity?.window?.decorView?.systemUiVisibility = // Not sure what should be the value

状态栏背景确实会更改,但不会更改文本。不确定systemUiVisibility值应该是什么。

阅读https://developer.android.com/reference/android/view/View但没有找到任何合适的,尝试过

SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,SYSTEM_UI_FLAG_LAYOUT_STABLE

仍然没有运气。

android statusbar
2个回答
0
投票

我不在Kotlin中编码,但以下代码片段可以解决问题

Window window = activity.getWindow();

// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// finally change the color
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));

它也应该自动更改文本颜色。

Reference

Source


0
投票

你需要设置decorViewsystemUiVisibility,以便在View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR上打开以下标志。

在你的情况下

activity?.window?.decorView?.systemUiVisibility = activity?.window?.decorView?.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
© www.soinside.com 2019 - 2024. All rights reserved.