zoukankan      html  css  js  c++  java
  • Android Scrollview嵌套RecyclerView导致滑动卡顿问题解决

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

    例如:

    [java] view plain copy
     
    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] view plain copy
     
    1. linearLayoutManager = new LinearLayoutManager(context) {  
    2.     @Override  
    3.     public boolean canScrollVertically() {  
    4.         return false;  
    5.     }  
    6. };  

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

    [java] view plain copy
     
    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. }  
  • 相关阅读:
    SQL未能排它地锁定数据库以执行该操作解决
    SQL日志文件丢失,只有MDF恢复
    ASP.Net2.0使用Log4Net(一)
    ASP.NET使用Memcached高缓存实例(初级教程)
    ASP.Net2.0使用Log4Net(二)
    Windows Server 2003域控制器的建立
    什么是SIP?
    [转].NET破解体验 ildasm.exe的使用
    Memcached深度分析(转载)
    X509证书帮助类
  • 原文地址:https://www.cnblogs.com/xgjblog/p/7504221.html
Copyright © 2011-2022 走看看