NestedScrollView+RecyclerView优雅的

作者: 唠嗑008 | 来源:发表于2017-07-11 16:54 被阅读383次

项目需求,商品详情页

详情.png

通常在做详情页的时候,难免需要用到ScrollView嵌套RecyclerView,ScrollView嵌套RecyclerView会存在显示不全的问题,滑动也不是太流畅,
网上有很多解决滑动冲突的方式,但是笔者今天带来的是一种比较优雅简洁的方式,NestedScrollView嵌套RecyclerView,不会存在显示不全的问题

xml:

<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <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="other"/>

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

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

上面的代码只是简单的布局嵌套而已,但是还有一个小问题,触摸到RecyclerView的时候滑动还有不流畅,只需

//布局文件的RecyclerView中设置
android:nestedScrollingEnabled="false" 
//或者Java代码设置
recyclerView.setNestedScrollingEnabled(false);

到此滑动冲突和显示不全的问题就可以解决了,但是也在此说明一点,这种办法只是适用于ScrollView中嵌套的那个RecyclerView的内容不是特别多,就像我的项目中,那个评价列表只显示几条,这种情况下,用这个办法不失为一个优雅的解决方式。为啥数据量大的时候就不要使用这种办法了呢?原因是:NestedScrollView+RecyclerView在显示上没什么问题,但会使RecyclerView在初始化就将所有的item都加载出来,换句话说,recyclerVIew的复用机制就不起作用了,所以看项目需求吧

相关文章

网友评论

  • hfk:可以考虑多布局
  • 红颜疯子:这个不够全面啊,那要是列表很多的时候怎么解决呢
    唠嗑008:@红颜疯子 我在文字最后备注了,如果列表的数据比较少,比如只有固定的几条的时候,还是可以的,一次性加载出来也没有问题。如果数据量大,只能去重写布局管理器,计算你列表的高度来解决了
  • pengpengli:可以用相对布局包起来,就能显示全了,完了禁止掉竖直滚动
    pengpengli:@陪你唠嗑 好吧,之前用listview的时候重写过布局管理器动态测量高度,现在这种方式用在购物车,没有多考虑你说的那种问题。
    唠嗑008:@pengpengli 这样处理,是能够解决,但是会把列表的全部内容都加载出来,也是失去了最重要的复用性

本文标题:NestedScrollView+RecyclerView优雅的

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