gpt4 book ai didi

android - 如何为 RecyclerView 的较新版本正确添加快速滚动器?

转载 作者:行者123 更新时间:2023-11-30 02:02:22 25 4
gpt4 key购买 nike

背景

过去,我曾询问过如何为 RecyclerView 创建一个快速滚动器(here),并找到了添加它的方法,我什至发布了它,包括一个 Github 项目(here) ).

问题

从特定的支持库版本开始,出现了问题。我制作的图书馆可以很好地处理这个:

compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'

但这个不是:

compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'

这是它过去如何工作的示例:

enter image description here

出现的bug是在拖动fast-scroller时,它(你拖动的东西)时不时会跳到其他地方(已报告here)。

我尝试过的

我尝试找出导致此问题的原因,并找出 RecyclerView 中可能导致此问题的更改。

我也曾尝试报告它 (here),但 Google 让我在这里询问。

遗憾的是,我找不到原因。

问题

我怎样才能解决这个问题,并使代码再次正常工作?

最佳答案

真巧,我刚用了你们的FastScroller也遇到了同样的问题,我也是用的22.2.0

我要测试的列表大约有 150 个项目,当我缓慢滚动时,我看到 handle 和气泡出现小跳动。

一些调试,我发现当我拖动 handle 时,方法 setBubbleAndHandlePosition() 被从 onTouch 和 onScrolled 调用。

问题在于 onScrolled 会根据顶行计算句柄的“完美”位置。这导致与通过触摸握住 handle 的位置不同。

我的解决方案非常简单,如果句柄处于“拖动”模式,我会通过检查 isSelected() 并阻止对 onScrolled() 的进一步计算来检查 onScrolled()。

@Override
public void onScrolled(RecyclerView rv, int dx, int dy)
{
// only react on scroll events when not done by moving the handle by touch
// prevents nervous jumping of the handle
if (handle.isSelected())
{
return;
}
// rest code of onScrolled is unchanged
}

我猜原因是/是 onScrolled 在 22.x 以下没有被调用但是现在被调用了......

关于android - 如何为 RecyclerView 的较新版本正确添加快速滚动器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31279151/

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