解决俩个问题,ScrollView嵌套RecyclerView,空白布局撑满RecyclerView

转载请注明原创出处,谢谢!

首先我要感谢这篇文章《解决ScrollView嵌套RecyclerView时item显示不全的问题》
还要感谢这篇文章《ScrollView嵌套LinearLayout布局不能撑满全屏的问题》

ps:最近在新项目中遇到了一个问题,一个ScrollView嵌套要嵌套多个RecyclerView。如效果图。当我没开始写的时候就考虑到了Item显示不全和滑动事件的问题。所有我开始查资料解决,虽然很快就解决了,但是踩了一个大坑,所有把他分享给其他正在由此问题的程序员们。

效果图.png

网上很多技术文章给出的方案是用自定义类FullyLinearLayoutManager解决问题,这个方案虽然最后解决了问题,但是滑动流畅度被改变了,像得了老年痴呆一样慢,这是我的App绝对不能忍受的。

幸运的是我又在网上查到了新的解决方案,也就是我开篇感谢的那篇文章,而且这个方案也被很多人使用,但是这个方案被那个像老年痴呆一样慢的文章给否决了,原因是没有完美解决。好玩的是,在我的app中,嵌套问题被完美解决。。。

我知道很多人的懒的点击我推荐的解决方案,使用我就把他拷贝一下,然后加点东西,做个小笔记,记录一下。

作者给出的方案是

在xml布局文件中将ScrollView替换android.support.v4.widget.NestedScrollView,并在java代码中设置recyclerView.setNestedScrollingEnabled(false);属性。

在MD中,RecyclerView代替了ListView,而NestedScrollView代替了ScrollView,就这么简单。Nested就是嵌套的意思。

NestedScrollView

翻译:NestedScrollView就像ScrollView,但它支持代理。作为一个嵌套的滚动父和子,在新版本和旧版本的Android。默认情况下启用了嵌套滚动。

新的问题:RecyclerView设置空数据View时布局不能撑满全屏

当解决了嵌套问题后,在给RecyclerView设置数据的时候,结果又出现了一个小问题,当RecyclerView设置的数据存在空白的情况时,需要显示EmptyView时,发现EmptyView不能填充满RecyclerView,这时候设置“fill_parent”或者“match_parent”是不管用的,因为当NestedScrollView没有设置fillVeewport为true时, 里面的元素(比如RecyclerView)会按照wrap_content来计算。(如截图效果)

EmptyView显示不完整.jpg

这时候只需要给NestedScrollView设置 android:fillViewport="true"即可解决问题。(如截图效果)

NestedScrollView设置fillViewport解决问题.jpg

实例代码

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    android:fillViewport="true"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical">

        <其他view>

        <android.support.v7.widget.RecyclerView
            android:layout_height="match_parent"
            android:layout_width="match_parent" />
    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

小计

如果只使用NestedScrollView替换了ScrollView,而不在java代码中设置recyclerView.setNestedScrollingEnabled(false);属性。那么你的App滑动流畅度就像得了老年痴呆一样,和自定义FullyLinearLayoutManager解决方案的滑动流畅度有的一拼。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容