【问题标题】:Have an item stick to the bottom of a RecyclerView让一个项目粘在 RecyclerView 的底部
【发布时间】:2016-12-16 15:09:40
【问题描述】:

我有一个使用 RecyclerView 的垂直可滚动列表。我试图实现的布局是,当您向下滚动足够远并到达特定项目时,如果您继续滚动超过该项目,它将粘在屏幕底部,而列表的其余部分继续在其后面滚动。目前它是通过在 RecyclerView 上设置一个滚动监听器并根据需要手动调整粘滞视图的位置来实现的,但这很笨拙且难以构建。

有没有更简单的方法来进行这种布局?我目前正在使用CoordinatorLayout 进行调查,但我不确定它是否适合这项工作。

【问题讨论】:

  • 我没试过这个,但之前做过类似的事情。听起来您可以在 onBindViewHolder 中使用 position 和 getItemViewType 执行此操作 - 即,当您滚动超过该项目所在的位置 X 时,之后的每个 onBind 调用都会检查“我们是否超过了位置 X?&& 这个位置是最后一个位置吗?”如果是,则返回您要显示的项目的视图类型,否则返回正常的视图类型
  • @SaikCaskey 我不认为这会给在粘性视图后面部分滚动项目提供灵活性。例如,如果视图本身仍然只是列表中的一个元素,则无法将列表的下一项滚动到粘性视图的一半。
  • 你应该试验一下看看 - 有内置的逻辑来处理半滚动视图。如果做不到这一点,也许您应该自己实现 RecyclerView 并构建一个粘性视图?我确信 GitHub 上的一些东西可以帮助你入门,而且你已经在处理低级了。
  • 哦,抱歉,我以为您想将其保留为列表的一部分

标签: android android-recyclerview android-coordinatorlayout


【解决方案1】:

您可以使用具有自定义行为的 CoordinatorLayout 来完成此操作。该行为应应用于粘性视图并使其在 RecyclerView 滚动时出现/消失。您必须在行为中覆盖 onStartNestedScroll 才能返回 true 以接收滚动更改的调用。

【讨论】:

  • @Rahul 我无法再访问它了,这是在之前的实习中完成的。
  • @Rahul 究竟是哪一部分?我自己编写了代码,但那是不久前的事了。如果是关于行为本身,它会不断手动更新视图的位置。我认为您可以在网上找到一些关于该部分的示例。我遇到的主要问题是不知道在 onStartNestedScroll 中返回 true。
  • onStartNestedScroll 返回 true 那么我必须在哪里处理滚动?
  • @Rahul 我认为它在 onTouch 的行为中(检查滚动事件):developer.android.com/reference/android/support/design/widget/…
猜你喜欢
  • 2021-08-18
  • 1970-01-01
  • 2018-05-12
  • 2023-03-07
  • 2022-06-12
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多