Закрепленный заголовок с горизонтальным RecyclerView не получает события касания или прокрутки в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Закрепленный заголовок с горизонтальным RecyclerView не получает события касания или прокрутки в Android

Сообщение Anonymous »

Я реализую RecyclerView с несколькими типами представлений, и мне нужен прикрепленный заголовок для определенных элементов. Чтобы добиться этого, я использовал ItemDecoration для визуализации прикрепленного заголовка, и он работает так, как ожидалось.
Прикрепленный заголовок сам по себе представляет собой горизонтальный RecyclerView и включает элементы, на которые можно нажать. Однако я столкнулся с проблемой: горизонтальный RecyclerView не обрабатывает события касания, включая клики и прокрутку.
Вот что я сделал:
Реализован собственный класс ItemDecoration для обработки липких заголовков.
Использован родительский.addOnItemTouchListener() для попытки перехвата событий касания.
Попытка добавить TouchDelegate для передачи событий касания в горизонтальный RecyclerView.
К сожалению, ни один из этих подходов не решил проблему, и прикрепленный заголовок по-прежнему не реагирует на действия пользователя.

Код: Выделить всё

class HeaderItemDecoration(
parent: RecyclerView,
private val shouldFadeOutHeader: Boolean = false,
private val isHeader: (itemPosition: Int) -> Boolean
) : RecyclerView.ItemDecoration() {

private var currentHeader: Pair? = null

init {
parent.adapter?.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
override fun onChanged() {
// clear saved header as it can be outdated now
currentHeader = null
}
})

parent.doOnEachNextLayout {
// clear saved layout as it may need layout update
currentHeader = null
}
// handle click on sticky header
//    parent.addOnItemTouchListener(object : RecyclerView.SimpleOnItemTouchListener() {
//      override fun onInterceptTouchEvent(
//        recyclerView: RecyclerView,
//        motionEvent: MotionEvent
//      ): Boolean {
//        return if (motionEvent.action == MotionEvent.ACTION_DOWN) {
//          motionEvent.y  contactPoint) {
if (mBounds.top = 0)
return headerPosition
}
}

inline fun View.doOnEachNextLayout(crossinline action: (view: View) -> Unit) {
addOnLayoutChangeListener { view, _, _, _, _, _, _, _, _ ->
action(
view
)
}
}
Что мне нужно:
Кто-нибудь знает, как включить прокрутку внутри прикрепленного заголовка.>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -or-scroll
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»