laobie / StatusBarUtil

A util for setting status bar style on Android App.
http://t.cn/Rq746Kb
Apache License 2.0
8.82k stars 1.72k forks source link

沉浸式状态栏 和设置状态栏字体颜色是不是冲突呀,我设置了沉浸式后在设置状态栏字体颜色,沉浸式就无效了 #182

Closed zzzsssbo closed 6 years ago

zzzsssbo commented 6 years ago

沉浸式状态栏 和设置状态栏字体颜色是不是冲突呀,我设置了沉浸式后在设置状态栏字体颜色,沉浸式就无效了

laobie commented 6 years ago

具体是怎么样的使用姿势?

zzzsssbo commented 6 years ago

MainActivity中包含一个viewpager ,viewpager中有3个Fragment,在MainActivity中调用了 StatusBarUtil.setTranslucentForImageViewInFragment(MainActivity.this, 0, null); 设置了沉浸式效果,但是我还想将状态栏的文字颜色改成黑色,setLightMode 后,而且文字颜色变成了黑色,但是沉浸式效果没有了

laobie commented 6 years ago

这种场景是吧,等我抽空我测试下看看。 你可以简单看下源码,代码不多,你试试改下,看看能修复不?

zzzsssbo commented 6 years ago

嗯 好的,谢谢

fanturbo commented 6 years ago
    /**
     * 设置透明
     */
    private static void setTransparentForWindow(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && "Xiaomi".equals(Build.MANUFACTURER)) {
            Window window = activity.getWindow();
            window.setStatusBarColor(Color.TRANSPARENT);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
            activity.getWindow()
                    .getDecorView()
                    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            activity.getWindow()
                    .setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

@zhangshaobo87 做个参考 我没试其他的,小米的对于23以上的sdk做了调整,https://dev.mi.com/console/doc/detail?pId=1159

laobie commented 6 years ago

@zhangshaobo87 1.5.1 版本发布了,修复了这个 bug @fanturbo

QianHong commented 5 years ago

1.5.1修改后怎么使用的?我是mainactivity+4fragment,里面有一个fragment顶部是图片。 由于状态栏底色是白的所以想把字体什么的设成黑色的。 使用: StatusBarUtil.setTranslucentForImageViewInFragment(MainActivity.this, 0, null); StatusBarUtil.setLightMode(this); 但是没有效果,状态栏的字体是黑的,但是沉浸式效果不见了。

pengpengegege commented 5 years ago

@zhangshaobo87 您好您的问题的怎么解决的啊?