如果不需要滚动,是否可以将RecyclerView中的最后一项停靠在底部?

StackOverflowed

我正在构建一个购物车RecyclerView,该购物车在RecyclerView中显示购物车中的所有物品,并且在底部具有一个汇总购物车的附加视图(总欠款,优惠券折扣(如适用)等)。

如果购物车中有> 3个项目,则看起来不错,因为用户必须滚动到底部才能查看“摘要视图”。但是,如果有1或2个项目,则出现第一个项目,而不是摘要视图,然后出现空白。我希望先输入项目,然后再输入空白,然后再选择摘要视图。

我尝试添加空项目,但是,根据设备的分辨率,它看起来不一致。

当前外观,如果少于3个项目(即,如果不需要滚动):

-----------
|  Item1  |
| ------- |
|  Item2  |
| ------- |
| Summary |
| ------- |
|         |
|         |
|         |
|         |
 ----------

所需外观:

-----------
|  Item1  |
| ------- |
|  Item2  |
| ------- |
|         |
|         |
|         |
|         |
| ------- |
| Summary |
 ----------
AndroidEx

我在考虑您的任务,并最终整理了一些可能有用的代码。不过在这个阶段有一个问题。

我所做的是在回收者视图中添加了一个项目装饰器:

recyclerView.addItemDecoration(new StickySummaryDecoration());

这是我对基本装饰器的实现(坦率地说,这是我对项目装饰器的初次体验,因此它可能不是最佳的或完全正确的,但我已尽力了):

public class StickySummaryDecoration extends RecyclerView.ItemDecoration {

    @Override
    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
        int childCount = parent.getAdapter().getItemCount();
        int lastVisibleItemPosition =
                ((LinearLayoutManager) parent.getLayoutManager()).findLastVisibleItemPosition();
        int firstVisiblePosition =
                ((LinearLayoutManager) parent.getLayoutManager())
                        .findFirstCompletelyVisibleItemPosition();
        if ((firstVisiblePosition == 0) && (lastVisibleItemPosition == (childCount - 1))) {
            View summaryView = parent.getChildAt(parent.getChildCount() - 1);
            int topOffset = parent.getHeight() - summaryView.getHeight();
            int leftOffset =
                    ((RecyclerView.LayoutParams) summaryView.getLayoutParams()).leftMargin;
            c.save();
            c.translate(leftOffset, topOffset);
            summaryView.draw(c);
            c.restore();
            summaryView.setVisibility(View.GONE);
        }
    }
}

所以我得到了什么。

简短列表的底端摘要:

短名单

您需要向下滚动以查看长列表中的摘要:

长列表(您需要向下滚动以查看摘要元素)

现在介绍一个问题。在长列表中向上滚动时的副作用是我尚未解决的问题。

问题

我的实验已上传到github仓库中,以防万一:)

编辑

刚刚,我来到回收站视图中缺少的行元素是回收的具有GONE可见性的摘要视图持有人应该有办法把它带回来...

编辑2

我重新考虑了我的第一个解决方案,并更改了一些代码以解决长列表的情况(在这种情况下,禁用了项装饰(我认为它更接近于您要实现的目标)),这将自动解决缺少行的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果子项停靠在边缘,则滚动条不会出现在父项控件中

来自分类Dev

InputAccessoryView停靠在底部

来自分类Dev

是否在MDI表单中将StatusStrip控件停在底部,将面板停靠在右侧?

来自分类Dev

将Windows Phone控件停靠在StackPanel的底部

来自分类Dev

将页脚停靠在Main Div的底部

来自分类Dev

将中间容器放在前一个容器之后,但停靠在底部

来自分类Dev

一个div内是否可以有两个div,一个停靠在左边,一个停靠在右边,以便在没有可用空间时缩小一个?

来自分类Dev

停靠在Conemu

来自分类Dev

WPF:停靠在“顶部”和“底部”的 DockPanel 中的两个控件仍然在底部留有空间

来自分类Dev

如何将两个浮动DockContents停靠在一起?

来自分类Dev

将一个面板停靠在其他两个面板之间

来自分类Dev

底部附加的AdView不允许我查看Recyclerview中的最后一项

来自分类Dev

如何取消停靠和分离停靠在C#Winforms中另一种形式的表单

来自分类Dev

如何更改停靠在自定义底部应用程序栏中的 FAB 周围的颜色?

来自分类Dev

W540停靠在薄荷中冻结

来自分类Dev

如何使RichTextBox正确停靠在WPF中

来自分类Dev

Navbar控件停靠在拆分容器面板1中

来自分类Dev

使用自定义WinForms控件,是否可以更改嵌套控件停靠在其中的矩形?

来自分类Dev

如何将开发人员工具停靠在Vivaldi Web浏览器中?

来自分类Dev

FlatList的最后一项从底部修剪

来自分类Dev

底部导航覆盖的最后一项

来自分类Dev

如何滚动到Flickable的Repeater中的最后一项

来自分类Dev

向上滚动直到UITableView中的最后一项

来自分类Dev

EmberJS:滚动到div中添加的最后一项

来自分类Dev

如何将视图设置为recyclerview中的最后一项

来自分类Dev

状态栏未正确停靠在停靠面板中

来自分类Dev

如何知道RecyclerView中的最后一项

来自分类Dev

GridLayout中的RecyclerView时无法显示最后一项

来自分类Dev

将页脚保持在页面底部(如果需要,可以滚动)

Related 相关文章

  1. 1

    如果子项停靠在边缘,则滚动条不会出现在父项控件中

  2. 2

    InputAccessoryView停靠在底部

  3. 3

    是否在MDI表单中将StatusStrip控件停在底部,将面板停靠在右侧?

  4. 4

    将Windows Phone控件停靠在StackPanel的底部

  5. 5

    将页脚停靠在Main Div的底部

  6. 6

    将中间容器放在前一个容器之后,但停靠在底部

  7. 7

    一个div内是否可以有两个div,一个停靠在左边,一个停靠在右边,以便在没有可用空间时缩小一个?

  8. 8

    停靠在Conemu

  9. 9

    WPF:停靠在“顶部”和“底部”的 DockPanel 中的两个控件仍然在底部留有空间

  10. 10

    如何将两个浮动DockContents停靠在一起?

  11. 11

    将一个面板停靠在其他两个面板之间

  12. 12

    底部附加的AdView不允许我查看Recyclerview中的最后一项

  13. 13

    如何取消停靠和分离停靠在C#Winforms中另一种形式的表单

  14. 14

    如何更改停靠在自定义底部应用程序栏中的 FAB 周围的颜色?

  15. 15

    W540停靠在薄荷中冻结

  16. 16

    如何使RichTextBox正确停靠在WPF中

  17. 17

    Navbar控件停靠在拆分容器面板1中

  18. 18

    使用自定义WinForms控件,是否可以更改嵌套控件停靠在其中的矩形?

  19. 19

    如何将开发人员工具停靠在Vivaldi Web浏览器中?

  20. 20

    FlatList的最后一项从底部修剪

  21. 21

    底部导航覆盖的最后一项

  22. 22

    如何滚动到Flickable的Repeater中的最后一项

  23. 23

    向上滚动直到UITableView中的最后一项

  24. 24

    EmberJS:滚动到div中添加的最后一项

  25. 25

    如何将视图设置为recyclerview中的最后一项

  26. 26

    状态栏未正确停靠在停靠面板中

  27. 27

    如何知道RecyclerView中的最后一项

  28. 28

    GridLayout中的RecyclerView时无法显示最后一项

  29. 29

    将页脚保持在页面底部(如果需要,可以滚动)

热门标签

归档