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 用户权限 )