如何在 Kotlin 中向下滚动一定数量后显示 "Toast"

How to show "Toast" after scrolling down a certain amount in Kotlin

我想在我的应用程序中实现一项功能,当用户向下滚动 recyclerview 时它会显示 Toast/message。例如,当用户向下滚动屏幕时,在他们通过大约 10 个项目后,弹出一个 Toast 说“点击主页按钮返回顶部”

我该怎么做?

我不知道这是否可行,但您可以尝试在您的适配器中执行此操作。喜欢

when (position) {
      10 -> Toast.makeText().show
}

或使用 if 语句。 再一次,我不确定它是否会起作用,但我认为是。

我认为基于滚动距离而不是最近出现在屏幕上的项目可能更可取,因此显示消息的阈值不取决于屏幕尺寸。由于关注点分离,最好将此行为保留在适配器之外。

这是一个滚动侦听器,您可以使用它来执行此操作。我认为代码是不言自明的。

open class OnScrolledDownListener(
    private val context: Context,
    private val thresholdDp: Int,
    var resetOnReturnToTop: Boolean = true
): RecyclerView.OnScrollListener() {
    private var eventFired = false
    private var y = 0

    open fun onScrolledDown() {}
    open fun onScrolledBackToTop() {}
    
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        y += dy
        val yDp = (y / context.resources.displayMetrics.density).roundToInt()
        if (yDp >= thresholdDp && !eventFired) {
            eventFired = true
            onScrolledDown()
        } else if (resetOnReturnToTop && yDp == 0 && eventFired) {
            eventFired = false
            onScrolledBackToTop()
        }
    }
}

当它第一次向下滚动至少一定量时 (onScrolledDown) 和当它滚动回顶部并自行重置时 (onScrolledBackToTop).

myRecyclerView.addOnScrollListener(object: OnScrolledDownListener(context, 120) {
    override fun onScrolledDown() {
        showMyMessage()
    }

    override fun onScrolledBackToTop() {
        hideTheMessage()
    }
})