前言
大家有没有遇到这样的情况,CoordinatorLayout + 列表(RecyclerView也好,其他控件也好)。当你的列表只有一两条数据的时候,你的产品或UI就会问你,为什么数据这么少,你还让它滚一屏的高度。
没错,使用CoordinatorLayout + AppBarLayout这一套组合,实现折叠效果的时候,RecyclerView也好,NestedScrollView也好,ViewPager也好,加了
这个behavior(@string/appbar_scrolling_view_behavior)的控件,都会有一屏的高度可以滚动(实际意义上其实不是真正的一屏高度,但是我说的一屏,能懂的大家都能get到,暂且就说成一屏)。
接下来就会讲解,怎样实现标题所说的,根据列表内容来决定能滚多少,而不是让它总是能滚一屏。
其实为什么要说这么多废话呢,因为这篇文章我打算收费,所以说长一点,把正文解决办法的内容撑到下面一点,不让它露出来。
效果预览


讲解
其实方案没有大家想得那么复杂。AppBarLayout的子控件下的app:layout_scrollFlags属性有一个exitUntilCollapsed。这个值相信也不用我作太多解析。当使用该值时,只要AppBarLayout下的子View,设置了最小高度minHeight,那么当前appbarlayout的折叠效果,就不会全部折叠,而是露出你设置的minHeight,而导致appbarlayout不会完全折叠,看起来就好像不能上滑的样子了。
以

本文介绍如何解决CoordinatorLayout在内容较少时仍然保持一屏滚动的问题。通过设置AppBarLayout子View的`exitUntilCollapsed`属性和指定最小高度,可以实现内容有多少就滚动多少的效果。代码示例中直接获取列表高度并设置,快速解决需求。

21万+

被折叠的 条评论
为什么被折叠?



