实现透明状态栏的方法网上有很多,但是基本都是对Activity的,没有Dialog、DialogFragment和PopupWindow的,这样就会出现一个对话框后,状态栏变的不协调。
1.Dialog和DialogFragment在设置style的时候api19及以上使用windowTranslucentStatus=true,api21及以上的时候使用windowTranslucentNavigation=true, statusBarColor设置透明
2.PopupWindow需要调用setClippingEnabled(false)这个方法
我使用的透明状态栏代码
private void setTranslucentStatus() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0 全透明实现
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else {//4.4 全透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}Ps:
1.当透明状态栏时,我是设置Toolbar的padding为状态栏高度,这个方法有个缺陷是当标题栏是白色的时候,想把状态栏背景那一块设成其它底色就很不好弄了,不如在Toolbar上弄个View来的方便。
2.感觉DialogFragment坑有点多,感觉不如自己用Fragment去实现
本文介绍了如何在Dialog、DialogFragment及PopupWindow中实现透明(沉浸式)状态栏。针对不同的Android API版本,提供了设置style的解决办法,并强调了PopupWindow需调用setClippingEnabled(false)。作者分享了自己使用透明状态栏时遇到的问题,如在标题栏为白色时设置状态栏颜色的困扰,以及对DialogFragment与自定义Fragment的看法。
4020

被折叠的 条评论
为什么被折叠?



