Android: ScrollView vs NestedScrollView


160

Sự khác biệt giữa ScrollViewvà là NestedScrollViewgì? Cả hai, mở rộng FrameLayout. Tôi muốn biết sâu về ưu và nhược điểm của cả hai.


Câu trả lời:


205

NestedScrollViewnhư tên cho thấy được sử dụng khi có nhu cầu cho chế độ xem cuộn bên trong chế độ xem cuộn khác. Thông thường điều này sẽ khó thực hiện vì hệ thống sẽ không thể quyết định chế độ xem nào sẽ cuộn.

Đây là nơi NestedScrollViewđến.


Đây là một Ứng dụng mẫu thể hiện một NestedScrollView trong một ScrollView gốc: github.com/AdamSHurwitz/NestedScrolling
Adam Hurwitz

36

Ngoài việc cuộn lồng nhau NestedScrollView được thêm vào một chức năng chính, thậm chí có thể làm cho nó thú vị bên ngoài bối cảnh lồng nhau: Nó được xây dựng để hỗ trợ OnScrollChangeListener. Thêm một OnScrollChangeListenervới bản gốc ScrollView dưới API 23 yêu cầu subclassing ScrollViewhoặc rối tung xung quanh với ViewTreeObservercácScrollView mà thường có nghĩa là công việc thậm chí nhiều hơn subclassing. Với NestedScrollViewnó có thể được thực hiện bằng cách sử dụng trình thiết lập dựng sẵn .


26

Khác với những ưu điểm được liệt kê trong các câu trả lời được đưa ra, một ưu điểm nữa của NestedScrollView so với ScrollView là khả năng tương thích với Điều phối viên. ScrollView không hợp tác với Điều phối viên. Bạn phải sử dụng NestedScrollView để có hành vi "cuộn ngoài màn hình" cho thanh công cụ.

Thanh công cụ sẽ không sụp đổ với Scrollview là con của Điều phối viênLayout


21

NestedScrollView

NestedScrollView giống như ScrollView, nhưng nó hỗ trợ hoạt động như cả cha mẹ và con cuộn cuộn lồng nhau trên cả hai phiên bản Android mới và cũ. Cuộn lồng nhau được bật theo mặc định.

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

Cuộn xem

Bộ chứa bố cục cho phân cấp chế độ xem có thể được người dùng cuộn, cho phép nó lớn hơn màn hình vật lý. ScrollView là FrameLayout, có nghĩa là bạn nên đặt một đứa trẻ trong đó chứa toàn bộ nội dung cần cuộn; Đứa trẻ này có thể là một trình quản lý bố cục với hệ thống phân cấp các đối tượng phức tạp

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


8

NestedScrollView giống như ScrollView, nhưng trong NestedScrollView, chúng ta có thể đặt các chế độ xem cuộn khác như là con của nó, ví dụ RecyclerView.

Nhưng nếu chúng ta đặt RecyclerView bên trong NestedScrollView, việc cuộn trơn tru của RecyclerView sẽ bị xáo trộn. Vì vậy, để mang lại cuộn di chuyển trơn tru có mẹo:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

đặt dòng trên sau khi cài đặt bộ điều hợp cho recyclerView.


Cảm ơn rất nhiều người anh em: D
Zafar Iqbal

Hãy nhớ rằng làm điều này (recyclerView bên trong Nested) là không hiệu quả về mặt bố trí / biện pháp bố trí. Kiểm tra nó và bạn sẽ thấy RV dừng quan điểm "tái chế" như thế nào.
Martin Marconcini

2

Tôi nghĩ một lợi ích của việc sử dụng chế độ xem Nested Scroll là bố cục cooridinator chỉ lắng nghe các sự kiện cuộn lồng nhau. Vì vậy, nếu cho ex. bạn muốn thanh công cụ cuộn xuống khi bạn cuộn nội dung hoạt động, nó sẽ chỉ cuộn xuống khi bạn đang sử dụng chế độ xem cuộn lồng trong bố cục của mình. Nếu bạn sử dụng chế độ xem cuộn bình thường trong bố cục của mình, thanh công cụ sẽ không cuộn khi người dùng cuộn nội dung.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.