首页 > 解决方案 > window.clearFlags(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)不能从片段内部工作

问题描述

我正在尝试清除 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));

标签: javaandroidandroid-fragments

解决方案


要启用 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)); 
    }
}

推荐阅读