Android: ScrollView vs NestedScrollView


160

Risposte:


205

NestedScrollViewcome suggerisce il nome viene utilizzato quando è necessaria una vista a scorrimento all'interno di un'altra vista a scorrimento. Normalmente questo sarebbe difficile da realizzare poiché il sistema non sarebbe in grado di decidere quale vista scorrere.

È qui che NestedScrollViewentra in gioco.


Ecco un'app di esempio che mostra un NestedScrollView all'interno di un genitore ScrollView: github.com/AdamSHurwitz/NestedScrolling
Adam Hurwitz,

36

Oltre allo scorrimento nidificato, è stata NestedScrollView aggiunta una delle funzionalità principali, che potrebbe anche renderlo interessante al di fuori dei contesti nidificati: ha un supporto integrato per OnScrollChangeListener. L'aggiunta di OnScrollChangeListenera ScrollView all'API 23 originale di seguito richiedeva la sottoclasse ScrollViewo il caos con ViewTreeObserverilScrollView che spesso significa ancora più lavoro della sottoclasse. Con NestedScrollViewesso può essere fatto utilizzando il setter incorporato .



21

NestedScrollView

NestedScrollView è proprio come ScrollView, ma supporta la funzione di genitore e figlio di scorrimento nidificati sia su versioni nuove che vecchie di Android. Lo scorrimento nidificato è abilitato per impostazione predefinita.

https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html

ScrollView

Contenitore di layout per una gerarchia di viste che può essere fatta scorrere dall'utente, consentendo di essere più grande della visualizzazione fisica. Un ScrollView è un FrameLayout, il che significa che è necessario posizionare un figlio al suo interno contenente l'intero contenuto da scorrere; questo figlio può essere esso stesso un gestore di layout con una complessa gerarchia di oggetti

https://developer.android.com/reference/android/widget/ScrollView.html


8

NestedScrollView è proprio come ScrollView, ma in NestedScrollView possiamo inserire altre viste di scorrimento come figlio di esso, ad esempio RecyclerView.

Ma se inseriamo RecyclerView in NestedScrollView, lo scorrimento regolare di RecyclerView è disturbato. Quindi per riportare lo scorrimento regolare c'è un trucco:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

mettere sopra la riga dopo aver impostato l'adattatore per recyclerView.


Grazie mille fratello: D
Zafar Iqbal,

Tieni presente che farlo (recyclerView all'interno di un annidato) è abbastanza inefficiente in termini di passaggi / misure del layout. Provalo e vedrai come il camper smette di "riciclare" le viste.
Martin Marconcini,

2

Penso che uno dei vantaggi dell'utilizzo della vista Scorri nidificati sia che il layout del cooridinator ascolta solo gli eventi di scorrimento nidificati. Quindi se per es. si desidera che la barra degli strumenti scorra verso il basso quando si scorre il contenuto dell'attività, scorrerà verso il basso solo quando si utilizza la vista di scorrimento nidificata nel layout. Se si utilizza una vista di scorrimento normale nel layout, la barra degli strumenti non scorre quando l'utente scorre il contenuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.