Прикрепленный заголовок сам по себе представляет собой горизонтальный 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