- 沉浸式状态栏相信大家都不陌生了,相关的文章到处都是,介绍一下一个我觉的比较好的文章,Android 沉浸式状态栏完美解决方案
Android关于沉浸式状态栏总结
- 如果有的页面想要只改变状态栏的颜色,并不侵入到状态栏上,相信大部分同学使用android:fitsSystemWindows="true"效果。这个与侵入式的相互矛盾,无法实现侵入到状态栏,最后在沉浸式的状态下,添加了一个和状态栏一样高的view,完美的解决问题。
/**
* 添加View到状态栏,在沉浸式状态下不侵入状态栏
*/
public static void setStatusBarView(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 生成一个状态栏大小的矩形
View StatusView = createStatusView(activity);
// 添加statusView到布局中
ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
decorView.addView(StatusView);
// 设置根布局的参数
ViewGroup rootView = (ViewGroup) (((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0));
rootView.setFitsSystemWindows(true);
}
}
private static View createStatusView(Activity activity) {
int statusBarHeight = getStatusBarHeight(activity);
View view = new View(activity);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight);
view.setLayoutParams(params);
view.setBackgroundColor(Color.TRANSPARENT);
return view;
}