Android:ScrollViewとNestedScrollView


160

回答:


205

NestedScrollView名前が示すように、別のスクロールビュー内にスクロールビューが必要な場合に使用されます。システムはどのビューをスクロールするかを決定できないため、通常、これを達成するのは困難です。

これがNestedScrollView出てくるところです。


ここでは、親ScrollView内NestedScrollViewを実証するサンプルアプリケーションです:github.com/AdamSHurwitz/NestedScrolling
アダム・フルビッツ

36

入れ子になったスクロールに NestedScrollView加えて、入れ子になったコンテキストの外でも面白くなる1つの主要な機能が追加されましたOnScrollChangeListener以下OnScrollChangeListenerの元のScrollView API 23にを追加するには、サブクラス化ScrollViewまたはのいじりがViewTreeObserverScrollView必要でした。これは、多くの場合、サブクラス化よりもさらに多くの作業を意味します。ではNestedScrollViewそれが使用して行うことができますビルドでセッターを



21

NestedScrollView

NestedScrollViewはScrollViewに似ていますが、Androidの新バージョンと旧バージョンの両方で、ネストされたスクロールの親と子の両方として機能することをサポートしています。ネストされたスクロールはデフォルトで有効になっています。

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

ScrollView

ユーザーがスクロールできるビュー階層のレイアウトコンテナーで、物理的な表示よりも大きくすることができます。ScrollViewはFrameLayoutです。つまり、スクロールするコンテンツ全体を含む子を1つ配置する必要があります。この子自体が、オブジェクトの複雑な階層を持つレイアウトマネージャである可能性があります

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


8

NestedScrollViewはScrollViewに似ていますが、NestedScrollViewでは、RecyclerViewなどの他のスクロールビューをその子として配置できます。

しかし、RecyclerViewをNestedScrollView内に配置すると、RecyclerViewのスムーズなスクロールが妨げられます。スムーズなスクロールを取り戻すにはトリックがあります:

ViewCompat.setNestedScrollingEnabled(recyclerView, false);

recyclerViewのアダプターを設定した後、上記の行を挿入します。


おかげで、たくさんの仲間:D
Zafar Iqbal

これを行う(Nested内のrecyclerView)ことは、レイアウトパス/測定の点で非常に非効率的であることに注意してください。これをテストすると、RVがビューの「リサイクル」を停止する方法がわかります。
マルティンマルコンチーニ

2

ネストされたスクロールビューを使用する利点の1つは、cooridinatorレイアウトがネストされたスクロールイベントのみをリッスンすることです。つまり、元の場合。アクティビティのコンテンツをスクロールするときにツールバーを下にスクロールさせたい場合は、レイアウトでネストされたスクロールビューを使用している場合にのみ下にスクロールします。レイアウトで通常のスクロールビューを使用する場合、ユーザーがコンテンツをスクロールしてもツールバーはスクロールしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.