Android LinearLayoutManager 和移除项目时的重定位

Posted

技术标签:

【中文标题】Android LinearLayoutManager 和移除项目时的重定位【英文标题】:Android LinearLayoutManager and relocation on item removal 【发布时间】:2016-05-03 15:14:56 【问题描述】:

LinearLayoutManager 提供了在回收器中重新定位项目的基本实现。假设recyclerView中的配置如下:

E0 | E1 E2 E3 | E4

在哪里 |表示recyclerView的有效边界,E1上的delete将在所有重绘和动画之后导致以下最终设置:

E0 | E2 E3 E4 |

我需要完成不同的行为。基本上我想要

| E0 E2 E3 | E4

其他元素的移动基于屏幕的左侧或右侧(在本例中相对于 E2),我已经进行了删除。基本上必须将原始中心元素作为选择要移动的部分的枢轴。

似乎这种行为并不容易实现。设置 stackFromEnd 并不能解决问题,因为我们在对面有类似的移除问题。在有效调用 adapter.onItemRemoved 之前在运行时更改 stackFromEnd 值也不能解决问题。

【问题讨论】:

以下链接可能值得一看:birbit.com/recyclerview-animations-part-2-behind-the-scenes 【参考方案1】:

删除时,只需致电scrollToPositionWithOffset(adapterPositionOf(E2), offsetOf(E2))

【讨论】:

谢谢。使用 smoothScrollBy 也可以顺利实现。尽管提议的解决方案似乎是一种解决方法,但我想知道是否可以通过对 LinearLayoutManager 进行一些更改来实现更简洁的解决方案(也指动画)

以上是关于Android LinearLayoutManager 和移除项目时的重定位的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast

图解Android - Android核心机制