ความแตกต่างระหว่างScrollViewและNestedScrollViewคืออะไร? FrameLayoutทั้งของพวกเขาขยาย ฉันต้องการที่จะรู้ในเชิงลึกข้อดีและข้อเสียของพวกเขาทั้งสอง
ความแตกต่างระหว่างScrollViewและNestedScrollViewคืออะไร? FrameLayoutทั้งของพวกเขาขยาย ฉันต้องการที่จะรู้ในเชิงลึกข้อดีและข้อเสียของพวกเขาทั้งสอง
คำตอบ:
NestedScrollViewเนื่องจากชื่อแนะนำถูกใช้เมื่อไม่จำเป็นต้องใช้มุมมองการเลื่อนภายในมุมมองการเลื่อนอื่น โดยทั่วไปจะทำได้ยากเนื่องจากระบบจะไม่สามารถตัดสินใจได้ว่าจะเลื่อนมุมมองใด
นี่คือที่NestedScrollViewมา
นอกจากนี้ยังมีการเลื่อนซ้อนกัน NestedScrollViewเพิ่มอีกหนึ่งฟังก์ชั่นหลักซึ่งแม้จะทำให้มันนอกที่น่าสนใจของบริบทที่ซ้อนกัน: OnScrollChangeListenerมีการสร้างในการสนับสนุน เพิ่มOnScrollChangeListenerไปที่เดิมScrollView ด้านล่าง API 23ต้อง subclassing ScrollViewหรือmessing รอบกับViewTreeObserverของScrollViewซึ่งมักจะหมายถึงการทำงานมากยิ่งขึ้นกว่า subclassing ด้วยNestedScrollViewมันสามารถทำได้โดยใช้setter ในตัว
นอกเหนือจากข้อดีที่ระบุไว้ในคำตอบที่ได้รับข้อดีอีกข้อหนึ่งของ NestedScrollView บน ScrollView คือความเข้ากันได้กับ CoordinatorLayout ScrollView ไม่ร่วมมือกับ CoordinatorLayout คุณต้องใช้ NestedScrollView เพื่อรับพฤติกรรม "เลื่อนปิดหน้าจอ" สำหรับแถบเครื่องมือ
Toolbar จะไม่ยุบด้วย Scrollview ในฐานะลูกของ CoordinatorLayout
NestedScrollView
NestedScrollView เป็นเหมือน ScrollView แต่รองรับการทำหน้าที่เป็นทั้งผู้ปกครองและเด็กเลื่อนการซ้อนบน Android ทั้ง Android รุ่นใหม่และเก่า การเลื่อนแบบซ้อนถูกเปิดใช้งานโดยค่าเริ่มต้น
https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html
ScrollView
คอนเทนเนอร์โครงร่างสำหรับลำดับชั้นมุมมองที่ผู้ใช้สามารถเลื่อนได้ทำให้ใหญ่กว่าจอแสดงผลแบบฟิสิคัล ScrollView เป็น FrameLayout ซึ่งหมายความว่าคุณควรให้เด็กหนึ่งคนในนั้นมีเนื้อหาทั้งหมดเพื่อเลื่อน เด็กคนนี้อาจเป็นผู้จัดการโครงร่างที่มีลำดับชั้นที่ซับซ้อนของวัตถุ
https://developer.android.com/reference/android/widget/ScrollView.html
NestedScrollView เป็นเหมือน ScrollView แต่ใน NestedScrollView เราสามารถใส่มุมมองการเลื่อนอื่น ๆ เป็นลูกของมันเช่น RecyclerView
แต่ถ้าเราใส่ RecyclerView ไว้ใน NestedScrollView การเลื่อนที่ราบรื่นของ RecyclerView จะถูกรบกวน ดังนั้นเพื่อให้การเลื่อนกลับราบรื่นมีเคล็ดลับ:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
ใส่บรรทัดด้านบนหลังจากตั้งค่าอะแดปเตอร์สำหรับ recyclerView
ฉันคิดว่าข้อดีอย่างหนึ่งของการใช้มุมมอง Nested Scroll คือโครงร่างของ cooridinator จะรับฟังเฉพาะเหตุการณ์เลื่อนที่ซ้อนอยู่ ดังนั้นหากเป็นเช่น คุณต้องการให้แถบเครื่องมือเลื่อนลงเมื่อคุณเลื่อนเนื้อหาของกิจกรรมมันจะเลื่อนลงเมื่อคุณใช้มุมมองเลื่อนซ้อนในเค้าโครงของคุณ หากคุณใช้มุมมองการเลื่อนปกติในเค้าโครงของคุณแถบเครื่องมือจะไม่เลื่อนเมื่อผู้ใช้เลื่อนเนื้อหา