Sự khác biệt giữa ScrollView
và là NestedScrollView
gì? 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.
Sự khác biệt giữa ScrollView
và là NestedScrollView
gì? 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:
NestedScrollView
như 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.
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 OnScrollChangeListener
với bản gốc ScrollView
dưới API 23 yêu cầu subclassing ScrollView
hoặc rối tung xung quanh với ViewTreeObserver
cácScrollView
mà thường có nghĩa là công việc thậm chí nhiều hơn subclassing. Với NestedScrollView
nó có thể được thực hiện bằng cách sử dụng trình thiết lập dựng sẵn .
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
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
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.
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.