Sto lavorando con RecyclerView e con un LinearLayoutManager corrispondente. Stavo aggiungendo alcune funzioni di scorrimento personalizzate a una parte della mia app in cui avrei tradotto un oggetto di intestazione personalizzato insieme al rotolo di RecyclerView modellato dopo questo progetto: https://github.com/boxme/ParallaxHeaderViewPager (che utilizza ListView anziché RecyclerView).RecyclerView LinearLayoutManager computeVerticalScrollOffset() che non restituisce il valore corretto
Mi sono imbattuto in un problema strano però. Scorrerebbe per un po ', ma poi salterà di qualche centinaio di pixel. Ho aggiunto istruzioni di registro per vedere l'offset calcolato da LinearLayoutManager.computeVerticalScrollOffset() mentre eseguivo lo scorrimento come abbastanza sicuro, l'offset si spostava in modo casuale da 320 a 1200, quindi continuava a calcolare l'offset in modo appropriato da quel punto.
Vedere la mia risposta qui sotto su come ho risolto questo!
Invece di farlo, è possibile eseguire l'override di 'computeVerticalScrollOffset',' extent' e 'range' per una soluzione più economica e corretta. – yigit
Questa è una grande idea! Ero un po 'diffidente nei confronti dei metodi RecyclerView e LayoutManager, in quanto le classi sono ancora relativamente nuove e potrebbero cambiare in modo significativo in futuro. Sono d'accordo che la mia soluzione era sul lato hacker ma almeno dovrebbe funzionare anche se la classe cambia in futuro :) – rakoonise
Questi metodi sono specchi di View così improbabile da modificare. Inoltre, quando cambiamo un metodo pubblico, proviamo a renderlo compatibile all'indietro se possibile – yigit