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



我想在我的应用程序中实现一个功能,当用户向下滚动回收视图时,它会显示Toast/消息。例如,当用户向下滚动屏幕时,在他们通过大约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()
}
})

最新更新