Android: ScrollView ve NestedScrollView karşılaştırması


168

Arasındaki fark nedir ScrollViewve NestedScrollView? İkisi de genişler FrameLayout. Her ikisinin de artılarını ve eksilerini derinlemesine bilmek istiyorum.


Yanıtlar:


217

NestedScrollViewAdından da anlaşılacağı gibi, başka bir kaydırma görünümünün içinde bir kaydırma görünüme ihtiyaç duyulduğunda kullanılır. Normalde, sistem hangi görünümü kaydıracağına karar veremeyeceği için bunu başarmak zor olacaktır.

İşte burada NestedScrollViewdevreye giriyor.


Üst ScrollView içinde bir NestedScrollView gösteren örnek bir Uygulama: github.com/AdamSHurwitz/NestedScrolling
Adam Hurwitz

38

Ek olarak iç içe kaydırma NestedScrollView O verilen desteğin birikimine sahiptir: Hatta iç içe bağlamlarda ilginç dışında yapabiliriz önemli bir işlevsellik ekledi OnScrollChangeListener. Bir ekleme OnScrollChangeListenerorijinaline ScrollView API 23 altına sınıflara gerekli ScrollViewveya ile karıştırmasını ViewTreeObserverarasındaScrollView hangi sıklıkta sınıflara daha fazla iş anlamına gelir. İle NestedScrollViewo kullanılarak yapılabilir yap-setter .



21

NestedScrollView

NestedScrollView, ScrollView gibidir, ancak Android'in hem yeni hem de eski sürümlerinde hem yuvalanmış kaydırma üst öğesi hem de alt öğe olarak davranmayı destekler. İç içe kaydırma, varsayılan olarak etkindir.

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

ScrollView

Kullanıcı tarafından kaydırılabilen ve fiziksel ekrandan daha büyük olmasına izin veren bir görünüm hiyerarşisi için düzen konteyneri. Bir ScrollView bir FrameLayout'tur, yani kaydırılacak içeriğin tamamını içeren bir alt öğe yerleştirmelisiniz; bu çocuğun kendisi karmaşık bir nesne hiyerarşisine sahip bir düzen yöneticisi olabilir

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


9

NestedScrollView tıpkı ScrollView gibidir, ancak NestedScrollView'da diğer kaydırma görünümlerini onun alt öğesi olarak koyabiliriz, örneğin RecyclerView.

Ancak RecyclerView'ı NestedScrollView'a koyarsak RecyclerView'ın düzgün kaydırması bozulur. Dolayısıyla, düzgün kaydırmayı geri getirmek için bir numara var:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

recyclerView için adaptörü ayarladıktan sonra çizginin üstüne koyun.


2
Bunu yapmanın (bir Nested içindeki recyclerView) düzen geçişleri / önlemleri açısından oldukça verimsiz olduğunu unutmayın. Test edin ve RV'nin "geri dönüşümü" nasıl durdurduğunu görün.
Martin Marconcini

3

Bence İç içe Kaydırma görünümünü kullanmanın bir Yararı, koordinatör düzeninin yalnızca iç içe kaydırma olaylarını dinlemesi. Öyleyse eski için. Araç çubuğunun, etkinlik içeriğinizi kaydırdığınızda aşağı kaydırmasını istiyorsanız, yalnızca düzeninizde iç içe kaydırma görünümünü kullandığınızda aşağı kayacaktır. Düzeninizde normal bir kaydırma görünümü kullanırsanız, kullanıcı içeriği kaydırdığında araç çubuğu kaymaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.