【发布时间】:2016-12-16 15:09:40
【问题描述】:
我有一个使用 RecyclerView 的垂直可滚动列表。我试图实现的布局是,当您向下滚动足够远并到达特定项目时,如果您继续滚动超过该项目,它将粘在屏幕底部,而列表的其余部分继续在其后面滚动。目前它是通过在 RecyclerView 上设置一个滚动监听器并根据需要手动调整粘滞视图的位置来实现的,但这很笨拙且难以构建。
有没有更简单的方法来进行这种布局?我目前正在使用CoordinatorLayout 进行调查,但我不确定它是否适合这项工作。
【问题讨论】:
-
我没试过这个,但之前做过类似的事情。听起来您可以在 onBindViewHolder 中使用 position 和 getItemViewType 执行此操作 - 即,当您滚动超过该项目所在的位置 X 时,之后的每个 onBind 调用都会检查“我们是否超过了位置 X?&& 这个位置是最后一个位置吗?”如果是,则返回您要显示的项目的视图类型,否则返回正常的视图类型
-
@SaikCaskey 我不认为这会给在粘性视图后面部分滚动项目提供灵活性。例如,如果视图本身仍然只是列表中的一个元素,则无法将列表的下一项滚动到粘性视图的一半。
-
你应该试验一下看看 - 有内置的逻辑来处理半滚动视图。如果做不到这一点,也许您应该自己实现 RecyclerView 并构建一个粘性视图?我确信 GitHub 上的一些东西可以帮助你入门,而且你已经在处理低级了。
-
哦,抱歉,我以为您想将其保留为列表的一部分
标签: android android-recyclerview android-coordinatorlayout