Sticky Header mit horizontalem RecyclerView empfängt keine Touch-Ereignisse oder Scroll in AndroidAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Sticky Header mit horizontalem RecyclerView empfängt keine Touch-Ereignisse oder Scroll in Android

Post by Guest »

Ich implementieren eine RecyclerView mit mehreren Ansichtstypen und benötigte für bestimmte Elemente einen Sticky-Header. Um dies zu erreichen, habe ich eine ItemDecoration verwendet, um den Sticky-Header zu rendern, und es funktioniert wie erwartet.
Der Sticky-Header selbst ist eine horizontale RecyclerView und enthält anklickbare Elemente. Ich stehe jedoch vor einem Problem: Die horizontale RecyclerView verarbeitet keine Berührungsereignisse, einschließlich Klicks und Scrolls.
Das habe ich bisher getan:
Implementierte eine benutzerdefinierte ItemDecoration-Klasse, um Sticky-Header zu verarbeiten.
Verwendete parent.addOnItemTouchListener(), um zu versuchen, Berührungsereignisse abzufangen.
Es wurde versucht, TouchDelegate hinzuzufügen, um Berührungsereignisse an die Horizontale zu übergeben RecyclerView.
Leider hat keiner dieser Ansätze das Problem gelöst und der Sticky-Header reagiert weiterhin nicht auf Benutzerinteraktionen.

Code: Select all

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
)
}
}
Was ich brauche:
Jeder hat eine Idee, wie man das Scrollen in einem Sticky-Header aktiviert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post