当前位置: 首页 > 知识库问答 >
问题:

如何允许滚动FAB上方的最后一项回收商视图?

厉高逸
2023-03-14

我有一个回收站视图,在右下顶部有一个FAB。

当滚动时,我希望允许用户进一步向上滚动,以使最后一项完全可见,并且不被FAB覆盖。允许在底部额外显示48像素的背景即可。

我尝试添加一个透明的页脚项目,这可以解决问题。但是,在向列表中添加排序后,透明页脚项在排序过程中会产生一些 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个答案

窦弘义
2023-03-14

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

    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。

 类似资料:
  • 我有一个动态填充的RecyclerView。 当新消息到达时,我使用此代码向下滚动到最后一个条目: 现在的问题是:如果用户已经向上滚动阅读旧消息,它不应该向下滚动。怎么才能检测出来?

  • 我有一个endless Recycler视图,其中包含使用JSoup从一个在线论坛线程中提取的数据。recyclerview将不断填充自己,直到用户到达最后一页。我想膨胀一个“端视图”,一旦用户到达最后一页,滚动到最后一个可见的项目,但我无法检索它。 我尝试使用getItemCount()和findLastVisibleItemPotion()从回收器视图linearlayoutManager。它

  • 我有一个视图寻呼机,在其中一个片段中,我有两个单独的片段,分别包含一个垂直和一个水平的回收视图。 当我将水平循环视图滚动到最后一个项目并尝试进一步滑动时,视图寻呼机滚动到下一页。我不想发生这种事。当我试图覆盖水平循环视图时,我想禁用viewpager的分页。 但是,当我在其他地方滑动时,我不想禁用viewpager的分页功能。例如,如果我在垂直recyclerview或父片段中的任何空白区域上滑动

  • 这是我的适配器 我想每次滚动一个项目。比如你在Instagram上看到多张照片。我怎么能那样做? 谢谢 和我的XML;

  • 我有一个水平回收视图。每个子级包含一个TextView和一个垂直RecyclerView。垂直RecyclerView的子级仅包含TextView。 垂直滚动非常平滑,但水平滚动滞后很多。我已经尝试在onBindViewHolder中使用swapAdapter,而不是setAdapter,但这并没有解决问题。我也尝试过更改数据集并调用notifyDataSetChanged(),但这也没有帮助。

  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个: