Android沉浸式状态栏下,如何代码实现android:fitsSystemWindows="true"的效果
16lz
2021-12-04
- 沉浸式状态栏相信大家都不陌生了,相关的文章到处都是,介绍一下一个我觉的比较好的文章,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自定义视图三:给自定义视图添加“流畅”的动画
- 新建Cocos2dx-Android工程
- android 动态添加View
- android 代码混淆问题解决
- Andriod开发之浏览器开发(WebView)
- android 刚进入activity 时关闭输入法
- Android(安卓)按钮添加单击事件
- android studio 添加项目修改gradle2.2.3
- Android官方入门文档[6]添加Action按钮