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

时间:2018-10-09 11:42:19

标签: android statusbar

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

背景为白色,文本为黑色。

进入模式弹出窗口时,状态栏将变为白色文本:

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

仍然没有运气。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您需要将decorView的{​​{1}}设置为打开以下标志systemUiVisibility

以您的情况

View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR