gpt4 book ai didi

android - RecyclerView 不会自动滚动到展开的 ViewHolder 项目

转载 作者:行者123 更新时间:2023-11-29 19:39:55 28 4
gpt4 key购买 nike

我有一个包含我的 ViewHolder 项目列表的 RecyclerView。当用户触摸某个项目时,其布局/ View 会展开以显示更多详细信息。非常标准的东西,效果很好……除了这种情况:

如果用户滚动到列表中的最后一个项目,然后触摸它,该项目就会在原地展开并消失在 View 中。换句话说,当项目展开时,它会扩展列表的底部,但列表不会自动滚动以将所有展开的项目“显示在屏幕上”或“在 View 中”保持在 RecyclerView 的范围内。

我尝试将 RecyclerView.scrollToPosition() 移动到列表的最后一个位置,但列表没有移动。

用户可以手动滚动列表并将完整展开的项目显示在 View 中,但我希望它自动发生。

想法?

编辑:我不知道这是否会影响事情,但列表已经手动滚动到列表底部,因此以编程方式滚动到相同位置似乎是多余的。本质上,我要做的是“刷新”列表中的滚动位置,以使整个最终列表条目进入 View 。

最佳答案

几乎使用 LinearLayoutManager 滚动方法。对我来说,解决方案是使用 LinearLayoutManager.scrollToPositionWithOffset(),同时提供扩展 View 的额外大小作为偏移量。

int distanceInPixels;
View firstVisibleChild = recyclerView.getChildAt(0);
int itemHeight = firstVisibleChild.getHeight();
int currentPosition = recyclerView.getChildAdapterPosition(firstVisibleChild);
int p = Math.abs(position - currentPosition);
if (p > 5) distanceInPixels = (p - (p - 5)) * itemHeight;
else distanceInPixels = p * itemHeight;
layoutMgr.scrollToPositionWithOffset(position, distanceInPixels);

关于android - RecyclerView 不会自动滚动到展开的 ViewHolder 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com