当前情况
我正在使用这个库https://github.com/kanytu/android-parallax-recyclerview来实现对RecyclerView的视差效果。到现在为止还挺好。不过,我希望得到像Google报亭这样的效果,标题仍然低于卡片。
问题
问题是当列表的第一个元素触及父视图的顶部时,RecyclerView(或LinerLayoutManager)会分离标题视图:
正如您所看到的那样,第一张cardview触及顶部的那一刻就是RecyclerView分离标题的那一刻。
我确信当卡到达顶部时,我得到RecyclerView.findViewHolderForPosition(0) == null
逻辑本身没有问题。证明标题已被回收。
尝试过的解决方案
我尝试过很多东西:
ViewHolder.setIsRecyclable使用此方法将持有者设置为不回收者不会产生任何影响。
LayoutManager.ignoreView我尝试将视图标记为在删除和回收时被忽略。结果是一个例外说:
Trying to recycle an ignored view holder. You should first call stopIgnoringView(view) before calling recycle.
setItemViewCacheSize什么都不做。尝试调用setItemViewCacheSize(50)
并且它对标题没有任何作用。
setMaxRecycledViews尝试将viewType = HEADER的回收视图的最大值设置为0并且仍然将其回收。
结论
所以我质疑是否有任何方式标记该项目是否在我订购之前没有分离(比如检查它是否仍然可见然后分开)。
github上还有一个问题:https://github.com/kanytu/android-parallax-recyclerview/issues/7
答案 0 :(得分:1)
您可以将新设计支持库的CoordinatorLayout与您的recyclerview一起使用,并产生相同的效果,而不会出现这样的问题。
点击此链接:http://android-developers.blogspot.com/2015/05/android-design-support-library.html