Jaka jest różnica między ScrollView
i NestedScrollView
? Oba rozszerzają się FrameLayout
. Chcę dogłębnie poznać zalety i wady obu z nich.
android
xml
android-layout
android-scrollview
android-nestedscrollview
Chintan Soni
źródło
źródło
Odpowiedzi:
NestedScrollView
jak sama nazwa wskazuje, jest używany, gdy istnieje potrzeba przewijania widoku w innym przewijanym widoku. Zwykle byłoby to trudne do osiągnięcia, ponieważ system nie byłby w stanie zdecydować, który widok przewinąć.Tutaj
NestedScrollView
pojawia się.źródło
Oprócz zagnieżdżonego przewijania
NestedScrollView
dodano jedną główną funkcję, która może nawet uczynić ją interesującą poza zagnieżdżonymi kontekstami: ma wbudowaną obsługęOnScrollChangeListener
. Dodanie aOnScrollChangeListener
do oryginałuScrollView
poniżej API 23 wymagało podklasyScrollView
lub mieszaniaViewTreeObserver
z tym,ScrollView
co często oznacza nawet więcej pracy niż podklasy. DziękiNestedScrollView
temu można to zrobić za pomocą wbudowanego setera .źródło
Poza zaletami wymienionymi w udzielonych odpowiedziach, jeszcze jedną zaletą NestedScrollView nad ScrollView jest jego zgodność z CoordinatorLayout. ScrollView nie współpracuje z CoordinatorLayout. Musisz użyć NestedScrollView, aby uzyskać zachowanie „przewijania poza ekranem” dla paska narzędzi.
Pasek narzędzi nie zwinie się, gdy Scrollview jest elementem podrzędnym CoordinatorLayout
źródło
NestedScrollView
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
https://developer.android.com/reference/android/widget/ScrollView.html
źródło
NestedScrollView jest tak samo jak ScrollView, ale w NestedScrollView możemy umieścić inne przewijane widoki jako potomne, np. RecyclerView.
Ale jeśli umieścimy RecyclerView wewnątrz NestedScrollView, płynne przewijanie RecyclerView zostanie zakłócone. Aby przywrócić płynne przewijanie, jest sztuczka:
umieść powyższą linię po ustawieniu adaptera do recyklingu.
źródło
Myślę, że jedną z zalet korzystania z widoku zagnieżdżonego przewijania jest to, że układ współrzędnych nasłuchuje tylko zdarzeń zagnieżdżonych przewijania. Więc jeśli np. chcesz, aby pasek narzędzi przewijał się w dół podczas przewijania treści działania, będzie on przewijał się w dół tylko wtedy, gdy używasz zagnieżdżonego widoku przewijania w układzie. Jeśli w układzie używasz normalnego widoku przewijania, pasek narzędzi nie będzie przewijał się, gdy użytkownik przewinie zawartość.
źródło