java - 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));
解决方案
要启用 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));
}
}
推荐阅读
- amazon-web-services - 如何在 AWS 上使用 Docker Swarm 查找特定服务
- c# - 夏普卡普:'。' 使用 printHex() 方法的字符而不是空格
- sql-server - 使用 SQL Server 并在 SET @sql 命令处出现语法错误
- regex - 如何从 Mercurial/TortoiseHG 的 .hgignore 文件中排除文件夹列表?
- apache-spark - Pyspark 的交叉验证指标
- java - 防止级联插入JPA
- scala - 在 Scala 代码中未发现路径遍历漏洞
- html - 使用指定的 href 作为正文打开 Instagram 直接消息的网站链接?
- python - Python 脚本 - 在本地环境中工作,但不在开发服务器上
- django - 如何将 SlugRelatedField 用于传入请求(反序列化)和完整序列化器用于响应相关字段