Recyclerview 测量滚动距离以禁用键盘
Posted
技术标签:
【中文标题】Recyclerview 测量滚动距离以禁用键盘【英文标题】:Recyclerview measure scroll distance to disable keyboard 【发布时间】:2020-10-12 05:26:27 【问题描述】:如果用户开始滚动RecyclerView
,我想隐藏键盘。
dy
是滚动距离,如果我理解正确的话,如果它通过了某个值,我可以隐藏键盘。
但我发现如果你在屏幕上按住手指并慢慢滚动,它不会改变dy
的值(它仍然是1
),这意味着我的方法不起作用。
有人知道如何处理这个特定用例的其他替代方法吗?
代码:
list.addOnScrollListener(object : RecyclerView.OnScrollListener()
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int)
if (dy.absoluteValue > KEYBOARD_HIDE_DIST) editText.clearFocus()
)
【问题讨论】:
如果您使用的是线性布局管理器,您可以添加一个监听器并在任何更改时隐藏键盘 【参考方案1】:在recyclerView上使用这个函数computeVerticalScrollOffset()会给出滚动位置的偏移量
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener()
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy)
super.onScrolled(recyclerView, dx, dy);
Log.d("Scrolled","Distance Scrolled : "+ recyclerView.computeVerticalScrollOffset());
);
还没有开始使用 kotlin,因此我添加了 java 代码。希望你得到了东西。让我知道它是否适合你
【讨论】:
以上是关于Recyclerview 测量滚动距离以禁用键盘的主要内容,如果未能解决你的问题,请参考以下文章
带有 MotionLayout 的 Android 折叠工具栏 - 当 RecyclerView 为空/不可滚动时禁用运动