沉浸式怎么处理
KotlinLan opened this issue · comments
状态栏部分的沉浸式使用了三方的工具com.jaeger.statusbarutil:library:1.4.0,上拉时demo里需要关闭沉浸式效果,就是这么设计的,如果你需要保持下拉状态的沉浸式,可以通过statusbarutil自行调整代码
如果有需要,请Reopen
沉浸式的朋友,解决方法:
注释两行代码
1.注释initStatus();
2.注释initListener()
中的
StatusBarUtil.setTranslucentForImageView(mActivity, (int) (255f * percent), null);
======================具体原理,可以不看型===========================
我通过读源码看到有这么一个方法addTranslucentView,源码如下
/** * 添加半透明矩形条 * * @param activity 需要设置的 activity * @param statusBarAlpha 透明值 */ private static void addTranslucentView(Activity activity, @IntRange(from = 0, to = 255) int statusBarAlpha) { ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content); View fakeTranslucentView = contentView.findViewById(FAKE_TRANSLUCENT_VIEW_ID); if (fakeTranslucentView != null) { if (fakeTranslucentView.getVisibility() == View.GONE) { fakeTranslucentView.setVisibility(View.VISIBLE); } fakeTranslucentView.setBackgroundColor(Color.argb(statusBarAlpha, 0, 0, 0)); } else { contentView.addView(createTranslucentStatusBarView(activity, statusBarAlpha)); } }
然后,通过查找调用到这个方法的地方,发现在initListener()
中有调用到。
运行后,发现toolbar不贴这顶部屏幕。
所以,再注释掉initStatus();
即可(主要是要注释里面的setLayoutParams
,但,注释initStatus();
也可以)
然后再运行,发现完美适配沉浸式了。
结束