我正在按照本教程和源代码使用 Motion Layout 来实现折叠工具栏。当您在 recyclerView 上执行“快速滚动”然后在 recyclerView 的任何项目上执行单击事件时,此事件仅在您第二次单击后才有效。或者您必须等待 2-3 秒,然后单击事件才起作用。否则无法将 click 事件分派到 recyclerView。(假设它等待在 MotionLayout 上完成动画)。我们如何解决这个问题?
任何人都可以通过将以下代码添加到文章源代码的适配器来模拟问题。并进行快速滚动。
class ViewHolder(
view: View,
private val textView: TextView = view.findViewById(android.R.id.text1)
) : RecyclerView.ViewHolder(view) {
var text: CharSequence
get() = textView.text
set(value) {
textView.text = value
}
init {
view.setOnClickListener { showMessage(it) }
}
private fun showMessage(view: View) {
Toast.makeText(view.context, "OnClickListener: item ${adapterPosition + 1}", Toast.LENGTH_SHORT).show()
}
}