Android沉浸式状态栏下,如何代码实现android:fitsSystemWindows="true"的效果
16lz
2021-01-23
- 沉浸式状态栏相信大家都不陌生了,相关的文章到处都是,介绍一下一个我觉的比较好的文章,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; }
更多相关文章
- Android RecyclerView多个Item布局的实现(可实现头部底部)
- Android计算器界面布局
- android 不使用布局文件,完全由代码控制布局实例
- android控件相对布局
- Android 动态布局
- 00015-相对布局位置属性
- Android中的集中常用布局方式和按钮事件的处理方式
- android RelativeLayout(相对布局)详细说明
- Android之布局属性