博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Scrollview嵌套RecyclerView导致滑动卡顿问题解决
阅读量:6369 次
发布时间:2019-06-23

本文共 1570 字,大约阅读时间需要 5 分钟。

一个比较长的界面一般都是Scrollview嵌套RecyclerView来解决.不过这样的UI并不是我们开发人员想看到的,实际上嵌套之后.因为Scrollview和RecyclerView都是滑动控件.会有一点滑动上的冲突.导致滑动起来有些卡顿.这个时候.我们重写一下LayoutManager就行了

例如:

 

[java]   
 
  1. LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false) {  
  2.         @Override  
  3.         public boolean canScrollVertically() {  
  4.             return false;  
  5.         }  
  6.     };  
  7.     recyclerview.setLayoutManager(linearLayoutManager);  
  8.     recyclerview.setAdapter(tempCommonAdapter);  
如此.禁止掉RecyclerView的滑动.就能一如既往的流畅了
 

问题现象:

一个界面有多个RecyclerView或者其他超过一屏显示的一些内容时,就需要要上下滚动了,就会需要在外面嵌套一个ScrollView,但是滑动过程不是很顺畅,有卡顿的感觉。

解决方案:

禁止RecyclerView的滑动。

 

最简单便捷的方法就是
[java]   
 
  1. linearLayoutManager = new LinearLayoutManager(context) {  
  2.     @Override  
  3.     public boolean canScrollVertically() {  
  4.         return false;  
  5.     }  
  6. };  

另外就是重写LayoutManager了,以Grid模式举例说明:

 

 

[java]   
 
  1. public class ScrollGridLayoutManager extends GridLayoutManager {  
  2.     private boolean isScrollEnabled = true;  
  3.     public ScrollGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {  
  4.         super(context, attrs, defStyleAttr, defStyleRes);  
  5.     }  
  6.   
  7.     public ScrollGridLayoutManager(Context context, int spanCount) {  
  8.         super(context, spanCount);  
  9.     }  
  10.   
  11.     public ScrollGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) {  
  12.         super(context, spanCount, orientation, reverseLayout);  
  13.     }  
  14.   
  15.     public void setScrollEnabled(boolean flag) {  
  16.         this.isScrollEnabled = flag;  
  17.     }  
  18.   
  19.     @Override  
  20.     public boolean canScrollVertically() {  
  21.         //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll  
  22.         return isScrollEnabled && super.canScrollVertically();  
  23.     }  
  24. }  

转载地址:http://woema.baihongyu.com/

你可能感兴趣的文章
jquery之clone()方法详解
查看>>
Delphi 用文件流读取文本文件字符串的方法
查看>>
php中怎么导入自己写的类
查看>>
C# 委托
查看>>
Using Information Fragments to Answer the Questions Developers Ask
查看>>
JVM学习(4)——全面总结Java的GC算法和回收机制---转载自http://www.cnblogs.com/kubixuesheng/p/5208647.html...
查看>>
getParameter和getAttribute的区别
查看>>
自动工作负载库理论与操作(Automatic Workload Repository,AWR)
查看>>
Redis两种方式实现限流
查看>>
CentOS 7 中使用NTP进行时间同步
查看>>
在MongoDB数据库中查询数据(上)
查看>>
Python import其他文件夹的文件
查看>>
Jvm(22),回收策略-----标记清除算法
查看>>
MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
查看>>
UNIX 高手的 10 个习惯
查看>>
传值与传引用
查看>>
HDU 1538 A Puzzle for Pirates(海盗分金问题)
查看>>
C# Web Forms - Using jQuery FullCalendar
查看>>
H5移动端知识点总结
查看>>
Sublime-Text-2-pydocstring --- 自动生成python docstring的插件
查看>>