Closed haegyeong closed 6 years ago
同需求呀,ui设计个破图,在同一activity下的两个fragment上去改状态栏字体颜色,丧心病狂啊
@RyanYans 兄弟,我是这样写的实现改变黑白字体的,配合这个库https://github.com/msdx/status-bar-compat,我没在fragment试过,你可以尝试一下,希望能帮到你 @TargetApi(Build.VERSION_CODES.LOLLIPOP) protected void setWhiteStatusBar() { StatusBarCompat.setStatusBarColor(this, R.color.black); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { Window window=getWindow(); //取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏 window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色 window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); //设置状态栏颜色 window.setStatusBarColor(getResources().getColor(R.color.white));
ViewGroup mContentView = (ViewGroup)findViewById(Window.ID_ANDROID_CONTENT);
View mChildView = mContentView.getChildAt(0);
if(mChildView !=null){
//注意不是设置 ContentView 的 FitsSystemWindows, 而是设置 ContentView 的第一个子 View . 预留出系统 View 的空间.
ViewCompat.setFitsSystemWindows(mChildView,true);
}
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
protected void setBlackStatusBar() {
StatusBarCompat.setStatusBarColor(this, R.color.white);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
Window window=getWindow();
//取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏 window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色 window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); //设置状态栏颜色 window.setStatusBarColor(getResources().getColor(R.color.black));
ViewGroup mContentView = (ViewGroup)findViewById(Window.ID_ANDROID_CONTENT);
View mChildView = mContentView.getChildAt(0);
if(mChildView !=null){
//注意不是设置 ContentView 的 FitsSystemWindows, 而是设置 ContentView 的第一个子 View . 预留出系统 View 的空间.
ViewCompat.setFitsSystemWindows(mChildView,true);
}
}
}
同求!
1.5 版本已经添加设置状态栏模式方法,请更新到最新版本
StatusBarUtil.setLightMode(Activity activity)
StatusBarUtil.setDarkMode(Activity activity)
我也不会啊,Google 会