Проблема с анимацией перелистывания элемента RecyclerView ⇐ Android
-
Гость
Проблема с анимацией перелистывания элемента RecyclerView
Сейчас я работаю над приложением для Android, которое включает в себя RecyclerView и функцию смахивания для закрытия. При реализации анимации отображения параметров смахивания я столкнулся с необычной проблемой.
Вот фрагмент кода для моей пользовательской обработки параметров пролистывания для отображения:
переопределить удовольствие onChildDrawOver( в: Холст, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: логическое значение ) { val itemView = viewHolder.itemView val isCanceled = dX == 0f && !isCurrentlyActive если (isCanceled) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, false) возвращаться } if (viewHolder — это OrderDetailProductsAdapter.OrderProductItemViewHolder) { привязка val = LayoutHistoryDetailItemBinding.bind(itemView) привязка.применить { getDefaultUIUtil().onDraw(c, recyclerView, this.itemHistoryDetailMainView, dX / 2, dY, actionState, isCurrentlyActive) } } } Проблема, с которой я столкнулся, заключается в том, что этот код не прокручивает представление до половины экрана, как предполагалось. Однако когда я использую следующий код, который вызывает метод onChildDraw суперкласса, он работает так, как ожидалось:
super.onChildDraw(c, recyclerView, viewHolder, dX/2, dY, actionState, isCurrentlyActive) Я хочу понять, почему пользовательская реализация не дает желаемого результата, в то время как метод onChildDraw по умолчанию дает. Мы будем очень признательны за любые идеи или предложения о том, как решить эту проблему.
Сейчас я работаю над приложением для Android, которое включает в себя RecyclerView и функцию смахивания для закрытия. При реализации анимации отображения параметров смахивания я столкнулся с необычной проблемой.
Вот фрагмент кода для моей пользовательской обработки параметров пролистывания для отображения:
переопределить удовольствие onChildDrawOver( в: Холст, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: логическое значение ) { val itemView = viewHolder.itemView val isCanceled = dX == 0f && !isCurrentlyActive если (isCanceled) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, false) возвращаться } if (viewHolder — это OrderDetailProductsAdapter.OrderProductItemViewHolder) { привязка val = LayoutHistoryDetailItemBinding.bind(itemView) привязка.применить { getDefaultUIUtil().onDraw(c, recyclerView, this.itemHistoryDetailMainView, dX / 2, dY, actionState, isCurrentlyActive) } } } Проблема, с которой я столкнулся, заключается в том, что этот код не прокручивает представление до половины экрана, как предполагалось. Однако когда я использую следующий код, который вызывает метод onChildDraw суперкласса, он работает так, как ожидалось:
super.onChildDraw(c, recyclerView, viewHolder, dX/2, dY, actionState, isCurrentlyActive) Я хочу понять, почему пользовательская реализация не дает желаемого результата, в то время как метод onChildDraw по умолчанию дает. Мы будем очень признательны за любые идеи или предложения о том, как решить эту проблему.
Мобильная версия