Comments (5)
是不是
setDarkMode
中setSystemUiVisibility
这个地方的问题,这地方直接强制全屏了这个要怎么改?
`
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}
@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, false);
setMeizuStatusBarDarkIcon(activity, false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}
`
我遇到的问题是 util 的源代码中直接set导致,所以先vis = getSystemUiVisibility()
,然后setSystemUiVisibility (vis & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
,当时大概是这么写的,demo找不到了。
思路的话当时看 setDarkMode
和 setLightMode
的差距,在 View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
这个常量上,看源码这个常量是只有一位是1的整形,盲猜底层是靠位运算去判断的。
所以这个地方先通过 get 方法获取原 activity 的 SystemUi,通过位运算去设置View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
对应的值,然后再通过set方法设置到 activity 的 SystemUi 上,解决了我当时的问题
from statusbarutil.
是不是setDarkMode
中setSystemUiVisibility
这个地方的问题,这地方直接强制全屏了
from statusbarutil.
是不是
setDarkMode
中setSystemUiVisibility
这个地方的问题,这地方直接强制全屏了
这个要怎么改?
from statusbarutil.
是不是
setDarkMode
中setSystemUiVisibility
这个地方的问题,这地方直接强制全屏了这个要怎么改?
`
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}@TargetApi(Build.VERSION_CODES.M) public static void setDarkMode(Activity activity) { setMIUIStatusBarDarkIcon(activity, false); setMeizuStatusBarDarkIcon(activity, false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } }
`
我遇到的问题是 util 的源代码中直接set导致,所以先
vis = getSystemUiVisibility()
,然后setSystemUiVisibility (vis & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
,当时大概是这么写的,demo找不到了。思路的话当时看
setDarkMode
和setLightMode
的差距,在View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
这个常量上,看源码这个常量是只有一位是1的整形,盲猜底层是靠位运算去判断的。所以这个地方先通过 get 方法获取原 activity 的 SystemUi,通过位运算去设置
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
对应的值,然后再通过set方法设置到 activity 的 SystemUi 上,解决了我当时的问题
刚才找到了以前的代码
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int visibility = activity.getWindow().getDecorView().getSystemUiVisibility();
if (visibility != (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
visibility = visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
}
}
@TargetApi(Build.VERSION_CODES.M)
public static void setDarkMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, false);
setMeizuStatusBarDarkIcon(activity, false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int visibility = activity.getWindow().getDecorView().getSystemUiVisibility();
if (visibility == (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
visibility = visibility ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
}
}
from statusbarutil.
是不是
setDarkMode
中setSystemUiVisibility
这个地方的问题,这地方直接强制全屏了这个要怎么改?
`
@TargetApi(Build.VERSION_CODES.M)
public static void setLightMode(Activity activity) {
setMIUIStatusBarDarkIcon(activity, true);
setMeizuStatusBarDarkIcon(activity, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}@TargetApi(Build.VERSION_CODES.M) public static void setDarkMode(Activity activity) { setMIUIStatusBarDarkIcon(activity, false); setMeizuStatusBarDarkIcon(activity, false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } }
我遇到的问题是 util 的源代码中直接set导致,所以先
vis = getSystemUiVisibility(),然后
setSystemUiVisibility (vis & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR),当时大概是这么写的,demo找不到了。 思路的话当时看
setDarkMode和
setLightMode的差距,在
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR这个常量上,看源码这个常量是只有一位是1的整形,盲猜底层是靠位运算去判断的。 所以这个地方先通过 get 方法获取原 activity 的 SystemUi,通过位运算去设置
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR` 对应的值,然后再通过set方法设置到 activity 的 SystemUi 上,解决了我当时的问题刚才找到了以前的代码
@TargetApi(Build.VERSION_CODES.M) public static void setLightMode(Activity activity) { setMIUIStatusBarDarkIcon(activity, true); setMeizuStatusBarDarkIcon(activity, true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int visibility = activity.getWindow().getDecorView().getSystemUiVisibility(); if (visibility != (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) { visibility = visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } activity.getWindow().getDecorView().setSystemUiVisibility(visibility); } }
@TargetApi(Build.VERSION_CODES.M) public static void setDarkMode(Activity activity) { setMIUIStatusBarDarkIcon(activity, false); setMeizuStatusBarDarkIcon(activity, false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int visibility = activity.getWindow().getDecorView().getSystemUiVisibility(); if (visibility == (visibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) { visibility = visibility ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } activity.getWindow().getDecorView().setSystemUiVisibility(visibility); } }
谢谢哈,我已经解决了。
from statusbarutil.
Related Issues (20)
- 不能同时做到设置状态栏全透明的同时设置颜色 HOT 1
- 请问是否支持androidx HOT 3
- 请问下如果想跟随滑动变化状态栏背景透明度且需要白色和黑色字体切换怎么实现啊 HOT 1
- 评论错项目了 HOT 1
- StatusBarUtil.setLightMode(this) => Toolbar goes behind statusBar HOT 1
- setDarkMode() 無效 HOT 1
- java.lang.ClassCastException(StatusBarUtil.clearPreviousSetting(StatusBarUtil.java:582))
- 软键盘导致ToolBar拉伸
- 使用之后,设置底部虚拟按键的背景颜色,设置不了
- calculateStatusColor() 算法问题
- setDarkMode 和 setLightMode 会使 布局向上偏移,设置fitsSystemWindows会使Edittextview长按上下文菜单边距失效 HOT 2
- 异形屏statusbar高度太低,导致内容被覆盖 HOT 1
- Status bar
- 有个StatusBarUtils的报错 能看下么 HOT 2
- 不维护了?什么时候适配水滴和挖孔屏
- 报错问题
- 1.5.1版本build失败
- 小米V130 com.jaeger.library.StatusBarUtil.setLightMode 报错org.json.JSONException: No value for cezanne
- 在清单文件里设置 android:windowSoftInputMode="adjustResize|stateHidden"软键盘不会顶起布局导致输入框被遮挡
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from statusbarutil.