window.clearFlags (View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) не работает изнутри фрагмента - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь очистить флаг View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, чтобы значки строки состояния стали белыми по умолчанию для моего темного фона строки состояния.

Проблема в том, что следующий код работает отлично, если я перемещаюсь по активности, но не работает, если я использую тот же код для фрагментов.

For Clearing Flags I am using this: 
getActivity().getWindow().clearFlags(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.my_calender_appbar_background));

For Setting Flag:getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.white));

1 Ответ

1 голос
/ 29 марта 2019

Чтобы включить windowLightStatusBar (программно, например, внутри класса Utils):

public static void setLightStatusBar(View view,Activity activity){


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            int flags = view.getSystemUiVisibility();
            flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
            view.setSystemUiVisibility(flags);
            activity.getWindow().setStatusBarColor(Color.WHITE); 
        }
}

Чтобы восстановить StatusBar до предыдущего состояния:

public static void clearLightStatusBar(Activity activity) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Window window = activity.getWindow();
        window.setStatusBarColor(ContextCompat
             .getColor(activity,R.color.colorPrimaryDark)); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...