如何在 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()
}
})
我想在我的应用程序中实现一项功能,当用户向下滚动 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()
}
})