如何允许滚动FAB上方的Recyclerview的最后一项?

时间:2018-02-09 13:53:21

标签: android android-recyclerview

我在右下方有一个带有FAB的RecyclerView。

滚动时我想让用户进一步向上滚动,使最后一个项目完全可见并且不被FAB覆盖。可以在底部显示额外的48px显示背景。

我尝试添加一个透明的页脚项目。但是,在向列表添加排序后,透明页脚项目在排序期间会创建一些UI故障(分隔符显示在正常项目下方)。

我尝试添加保证金,但随后空间被浪费了。当用户查看顶部的第一个项目时,FAB可以覆盖最后一个项目。只有当最后一个项目比项目重要时,才能覆盖该项目。

这是布局xml:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <android.support.v7.widget.RecyclerView
     android:id="@+id/recycler_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_gravity="center"
     android:clipToPadding="false"
     android:scrollbars="vertical"/>
 <android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    style="@style/floating_action_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/fab_margin"
    android:src="@drawable/ic_add_white_24dp"
    app:layout_anchorGravity="bottom|center"/>
</android.support.design.widget.CoordinatorLayout>

更新 使用项目装饰是正确的答案。

1 个答案:

答案 0 :(得分:0)

我认为如果内容向下滚动,更好的解决方案应该计算滚动范围并隐藏工厂。

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy){
        if (dy > 0) {
            fab.hide();
            return;
        }
        if (dy < 0) {
            fab.show();
        }
    }
});

但如果你真的想在底部添加保证金,你应该使用ItemDecoratorion