Переключить цвет текста строки состояния между черным и белым - PullRequest
0 голосов
/ 09 октября 2018

Приложение запускается с цветом строки состояния:

Фон белый, текст черный.

При входе в модальное всплывающее окно,строка состояния меняется на обратную, с белым текстом:

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 голосов
/ 01 мая 2019

Вам необходимо установить decorView systemUiVisibility, чтобы включить следующий флаг View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.

В вашем случае

activity?.window?.decorView?.systemUiVisibility = activity?.window?.decorView?.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
0 голосов
/ 09 октября 2018

Я не кодирую в 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));

Он также должен автоматически изменить цвет текста.

Ссылка

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...