MotionLayout с событиями щелчка RecyclerView работает только после второго щелчка

#android #android-recyclerview #android-motionlayout

#Android #android-recyclerview #android-motionlayout

Вопрос:

Я следую этому руководству и исходному коду, чтобы реализовать сворачивающуюся панель инструментов с помощью Motion Layout. Когда вы выполняете «быструю прокрутку» в RecyclerView, а затем выполняете событие щелчка по любому элементу RecyclerView, это событие срабатывает только после второго щелчка. Или вам нужно подождать 2-3 секунды, чтобы событие щелчка сработало. В противном случае событие щелчка не может быть отправлено в 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()
    }

}
  

Ответ №1:

Обновите ConstraintLayout до версии 2.0.0-beta2

https://issuetracker.google.com/issues/128914828