热点新闻
CoordinatorLayout使用AppBarLayout+ViewPager点击按钮回到顶部
2024-10-09 20:04  浏览:744  搜索引擎搜索“微商筹货网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在微商筹货网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

如何写一个折叠布局
相信大部分人都会首先想到CoordinatorLayout
没错,使用CoordinatorLayout,然后再使用AppBarLayout很容易就能实现优雅的折叠布局

但是如果产品要你在右下角加一个按钮点击回到顶部呢,并且滑动到一定距离才会显示,默认不显示。
我最先想到的是ScrollView,但是很遗憾会滑动冲突,然后我尝试了重写onTouchEvent和onInterceptTouchEvent但是都不是很好。
最后放弃ScrollView,退而求其次实现了一个没有滚动效果的回到顶部(个人感觉很不优雅)

显示与隐藏

显示与隐藏这个很简单可以写一个View也可以使用一张图片,主要看你的需求
那么距离如何判断呢?
使用AppBarLayout的addOnOffsetChangedListener方法
直接上代码

mBinding.appBarLayout.addonOffsetChangedListener(new AppBarLayout.onOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (verticalOffset >=0 ){ mBinding.toTop.setVisibility(View.GONE); }else { mBinding.toTop.setVisibility(View.GONE); if (verticalOffset < -1250){ mBinding.toTop.setVisibility(View.VISIBLE); } } } });

判断verticalOffset的值就行了
最顶部的值是0,越往下滑值越小

回到顶部

滑动距离我们已经得出,那么只需要实现点击后的回到顶部就行了
使用AppBarLayout的behavior属性,详细只是建议另找大佬的文章学习,我就不多写了,免得暴露自己水平
直接看代码

ViewGroup.LayoutParams layoutParams = mBinding.appBarLayout.getLayoutParams(); AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) ((CoordinatorLayout.LayoutParams) layoutParams).getBehavior(); if (behavior != null) { behavior.setTopAndBottomOffset(0); mBinding.toTop.setVisibility(View.GONE); }

最主要的就是这句behavior.setTopAndBottomOffset(0);
因为我是直接回到顶部,所以直接使用了0
如果你想回到某个组件的位置,在这句前面加上获取组件位置的代码:

float y = mBinding.tvTop.getY();//获取组件的位置 behavior.setTopAndBottomOffset((int) -y);

然后就大功告成了
点击后会直接跳到顶部,没有过度过程
如果大佬有更好的方法欢迎评论指导下(非常感谢)

发布人:6ae5****    IP:124.223.189***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发