NestedScrollView+Recyclerview下滑卡顿解决方法

NestedScrollView+Recyclerview下滑卡顿解决方法

2023年7月13日发(作者:)

NestedScrollView+Recyclerview下滑卡顿解决⽅法⼤家在进⾏安卓开发⽤到NestedScrollView+Recyclerview的时候,经常出现的情况就是加载下滑的时候没有任何问题,很流畅,但是在下滑以后明显出现了卡顿的情况,⼩编根绝这个问题,给⼤家再来的解决⽅法,⼀起来学习下。我们先来看下这个BUG的表现:1.滑动卡顿,2.加载下滑时流畅,下滑时明显的卡顿3.进⼊页⾯时直接加载RecyclerView部分的内容(这⾥我理解为控件惯性,不知道对不对-------尴尬)下⾯我们⼀⼀来解决这些问题在开发项⽬中,涉及到到商品详情页,新闻详情页等的页⾯时,通常情况下,商品详情页的底部会附上商品的评论或者是相关商品的的推荐,或者是相关性的⽂章.那么我们就会⽤到列表的RecyclerView,在头部可能是⼀些⽐较复杂的多种界⾯,可能采⽤⽐较简单的⽅法来处理,那就是NestedScrollView+Recyclerview,这这种⽅式⽐较直观和⽅便操作.⽐如像下⾯的代码 .....此处省略

⾸先.滑动动卡顿的问题.在布局⽂件中添加android:nestedScrollingEnabled="false"这⼀属性或者通过代码设置也是可以的,tedScrollingEnabled(false);这样滑动的时候就不会出现有卡顿的现象.其次是加载上下滑动加载流畅时通过代码FixedSize(false);对于第三种现象,我找了很多⽅法,都以失败⽽告终,其实出现这种情况是应为Recyclerview在加载数据的时候获取到了焦点导致,所以只需要在对RecylerView在带中设置不能获取焦点即可.添加以下代码usable(false);

以上是⼩编测试过的解决⽅法,接下来,我们再给⼤家分享⼀篇简单的⽅法代码: 最开始使⽤ScrollView的时候嵌套ListView会出现item显⽰不全等⼀些问题,现在google提供NestedScrollView已经可以解决该问题,但是在使⽤NestedScrollView嵌套RecyclerView的时候会发现我们在RecyclerView上滑动的时候没有了滚动的效果,查看⽂档找到的解决办法: LinearLayoutManager layoutManager = new LinearLayoutManager(this); othScrollbarEnabled(true); oMeasureEnabled(true); outManager(layoutManager); FixedSize(true); tedScrollingEnabled(false);就在⼩编完稿的时候,⼜发现了两种⽅法,⼤神真的是多啊,⼀起整理后分享给你当ScrollView嵌套RecyclerView时,会出现滑动卡顿,不平滑的效果。对此有两种解决⽅案。⽅案⼀设置RecyclerView属性⽅法FixedSize(true); tedScrollingEnabled(false);或者直接在recycleview中 添加属性android:nestedScrollingEnabled="false"⽅案⼆如果⽅案⼀⽆效,不妨试试重写ScrollView的onInterceptTouchEvent()⽅法,强制让其触摸事件都交给其⼦控件去处理public class RecycleScrollView extends ScrollView {private int downX;private int downY;private int mTouchSlop;public RecycleScrollView(Context context) {super(context);mTouchSlop = (context).getScaledTouchSlop();}public RecycleScrollView(Context context, AttributeSet attrs) {super(context, attrs);mTouchSlop = (context).getScaledTouchSlop();}public RecycleScrollView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);mTouchSlop = (context).getScaledTouchSlop();}@Overridepublic boolean onInterceptTouchEvent(MotionEvent e) {int action = ion();switch (action) {case _DOWN:downX = (int) X();downY = (int) Y();break;case _MOVE:int moveY = (int) Y();if ((moveY - downY) > mTouchSlop) {return true;}}return rceptTouchEvent(e);}}通过以上操作,界⾯就不会再卡顿了,还原了原本的惯性。以上就是关于NestedScrollView+Recyclerview下滑卡顿的所有⽅法,希望我们整理的东西能够真正帮助到你,喜欢的话就收藏⼀下吧。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689214924a222117.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信