NestedScrollView+RecyclerView优雅的

作者: dongjunkun | 来源:发表于2017-01-23 17:13 被阅读26862次

在此之前,经历过ScrollView嵌套ScrollView滑动冲突,ScrollView与ListView嵌套滑动冲突等等,网上解决方法比较多暂不赘述了,RecyclerView出来已经差不多2年了,ListView可以说已经成为了过去式了,现在开发完全使用RecyclerView就行了。

我亲自试验过,RecyclerView嵌套RecyclerView是不存在滑动冲突的,ScrollView嵌套RecyclerView也会存在显示不全的问题,滑动也有一点点粘连的感觉不是太流畅,NestedScrollView嵌套RecyclerView不会存在显示不全的问题,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/app_name"/>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/app_name"/>
    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

上面的代码只是简单的嵌套而已,但是还有一个小问题,触摸到RecyclerView的时候滑动还有些粘连的感觉,只需要在代码中设置

mRecyclerView.setNestedScrollingEnabled(false);

就可以完美的解决这个问题。

欢迎转载,转载请注明原文链接,谢谢配合!!

相关文章

网友评论

  • longzekai:可以,解决了我的问题。
  • Aiden_9:怎么都是这样复制的,根本解决不了问题,或者说只解决了部分问题。5.0一下的根本没用
  • dfc0ce271de5:这样的话如果有粘性头怎么粘性头就失效了呢?
  • zp_风:这种写发RecyclerView 能够分页吗
  • YanYang6:recyclerView只显示一个,后面的不显示
  • Insomnia_Sum:很好用 比重写LayoutManager方便多了
  • 夙愿終不毁:只针对API21以上有效,如何适配以下的?
    dongjunkun:@夙愿終不毁 额,好像没遇到这个问题
  • 幻化万千戏红尘:非常感谢,原来是recycleview里面的控件抢占了焦点。android:focusable="true"
    android:focusableInTouchMode="true"正解
  • 5cffd4cceaa9:可以的,点赞,解决了问题.
    Evan_we:真的可以吗?
    我怎么试了不行啊。。。。。。这么尴尬的吗
  • v587的毅哥:完美。一行代码。
  • hexiaosa:可以看一下这篇文章,一句话就可以解决ScrollView和RecycleView的滑动冲突,http://www.jianshu.com/p/7e17e48e6baf
  • 文武锅:这个就没意义了,一旦把recyclerview或者listview高度完全展开,他们自身的滑动根本就无效了,哪儿来的存在滑动冲突,复用机制也废掉了,一旦数据量大了必定oom,还不如自己LinearyLayout addView进去,还比recyclerview和listview性能好一点
    dongjunkun: @果汁_de5e 愿闻其详😀
    果汁_de5e:其实是有解决方法的 NestedScrolling 用这个 完美解决各种嵌套滑动的问题 scrollview 和 recyclerview 可以完美兼容 复用没有任何问题
    dongjunkun:是这样的,一般情况可以用一个RecyclerView就可以实现,通过添加header或者footer,我这个属于一种比较偷懒的写法,一般用于详情页面或者固定列表页面,数据多我也不建议这样写
  • 1a7ca2d05391:解决了我遇到的问题。谢谢:grin:
  • 狂猿:NestedScrollView与RecyclerVIew嵌套后,recyclerVIew的复用机制就不起作用了,加载数据的时候,会将所有的数据都加载出来,对吗?
    dongjunkun: @Jokerli007 是的
  • rivc:请问scrollview包住recyclerview 然后recyclerview.scrollToPosition(20) 失效,请问什么原因呢
  • arkinzheng:我测试了以下,NestedScrollView+RecyclerView在显示上没什么问题,但会使RecyclerView在初始化就将所有的item都加载出来。而且RecyclerView的scrollToPosition(int position)也失效了。
    dongjunkun: @arkinzheng 嗯,也可以使用一个recyclerview添加header和footer就行了
  • 76ffef5441ab:这个哎scr嵌套list这么好用吗
    76ffef5441ab: @dongjunkun 多谢指点
    dongjunkun: @会编程的_宁采臣 试试就知道了
  • lixinxin:我在recyclerView 上面 添加了两个 TextView
    dongjunkun:RecyclerView是在LinearLayout里面的,如果是FrameLayout或者RelativeLayout如果没有设置相关属性,会覆盖的
  • lixinxin:好像有问题 默认显示的是 recyclerView 的第一条 不是顶部的 TextView 。
    dongjunkun:@lixinxin 我知道问题了,你的RecyclerView里面有控件抢了焦点,在你的RecyclerView所在的最顶层的View添加
    android:focusable="true"
    android:focusableInTouchMode="true"应该可以解决你的问题
    lixinxin:@dongjunkun 第一次 进去 显示的是recyclerView ,textView 下拉后可以显示 。你的代码可以看一下吗?
    dongjunkun:额,你再确认下,我这边没有问题的,可以改改上面的代码,TextView换成明显一点的布局(或者改个颜色),我在项目中开始最顶层是NestedScrollView显示没问题,后续最外层还添加了SwipeRefreshLayout
  • 小王泽哥:coordinationview和recycle view滑动冲突怎么办
    dongjunkun: @小王泽哥 额,还没碰到过

本文标题:NestedScrollView+RecyclerView优雅的

本文链接:https://www.haomeiwen.com/subject/wuhkuttx.html