【问题标题】:Recyclerview scrolling past FABRecyclerview 滚动过去 FAB
【发布时间】:2015-04-29 12:30:18
【问题描述】:

我正在使用 recyclerview 并在我的布局上有一个 FAB。 我希望能够在最后一项的底部留出一点空间,就像 Gmail 应用程序一样,当您滚动到底部时,底部项目上的右侧星号仍然是可点击的。

我尝试在底部添加一些填充以实现此目的,但滚动条不会一直滚动到底部,而是在填充高度处停止,而 Gmail 版本可以。有谁知道如何做到这一点?

<RecyclerView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:paddingBottom="90dp"
    android:scrollbars="vertical" />

【问题讨论】:

  • 在不可见的列表项的最后位置添加一个额外的视图!

标签: android android-recyclerview


【解决方案1】:

您必须在适配器末尾添加“页脚”。此页脚将只是一个空白视图,例如 android.widget.Space

回收站视图没有任何用于页眉和页脚的原生选项,但您可以四处搜索并找到一些选项。

我为具有页眉/页脚/部分选项的回收器视图开发了一个带有附加功能的库:

我还没有将它上传到 Maven,但你可以在这里获取代码:https://github.com/eyeem/RecyclerViewTools

那么使用就是:

WrapAdapter wrapAdapter = new WrapAdapter(adapter);
wrapAdapter.addFooter(inflater.inflate(R.layout.footer, recycler,   false));
recycler.setAdapter(wrapAdapter);

【讨论】:

  • 看起来很完美,谢谢,我没想过调整适配器而不是视图......现在很明显。顺便说一句,很棒的小库。
  • @CodeChimp 只需确保对其进行很好的测试,因为它是一个非常新的库,并且边缘可能很粗糙。 (如果您发现错误,请报告)
  • 我可能只是采取相关位并合并到我自己的客户适配器中来解决这个紧迫的问题,但如果我发现任何东西会反馈。
【解决方案2】:

添加页脚最简单的方法是设置一个具有usesFooter() 标志的自定义适配器,如果为真,则将行数加 1(如果不需要添加,则始终加一)还要别的吗)。然后在onCreateViewHolder() 中检查该位置是否是列表中的最后一个位置,并使用您要添加的填充高度(例如 80dp)填充一个空视图

您还应该在onBindViewHolder() 的这个位置添加一个返回,因为它是一个空视图,不需要更新其数据。

【讨论】:

  • 谢谢,@Budius 给出了一个更有效的例子,但你们都给了我前进的方向。
【解决方案3】:

使用它

  android:layout_marginBottom = "80dp"

【讨论】:

  • 这只会将整个视图放置在活动底部上方 80dp 处。我希望根据 Gmail 在最后一项的底部进行填充。
  • a,现在明白了。所以你应该让你的自定义滚动视图像这样 stackoverflow.com/questions/10316743/detect-end-of-scrollview 。并收听滚动到最后,然后用动画显示您的 FAB
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多