回答:
NestedScrollView
名前が示すように、別のスクロールビュー内にスクロールビューが必要な場合に使用されます。システムはどのビューをスクロールするかを決定できないため、通常、これを達成するのは困難です。
これがNestedScrollView
出てくるところです。
入れ子になったスクロールに NestedScrollView
加えて、入れ子になったコンテキストの外でも面白くなる1つの主要な機能が追加されましたOnScrollChangeListener
。以下OnScrollChangeListener
の元のScrollView
API 23にを追加するには、サブクラス化ScrollView
またはのいじりがViewTreeObserver
ScrollView
必要でした。これは、多くの場合、サブクラス化よりもさらに多くの作業を意味します。ではNestedScrollView
それが使用して行うことができますビルドでセッターを。
回答に挙げられている利点以外に、ScrollViewよりもNestedScrollViewが優れている点の1つは、CoordinatorLayoutとの互換性です。ScrollViewはCoordinatorLayoutと連携しません。NestedScrollViewを使用して、ツールバーの「画面外にスクロール」する動作を取得する必要があります。
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
NestedScrollViewはScrollViewに似ていますが、NestedScrollViewでは、RecyclerViewなどの他のスクロールビューをその子として配置できます。
しかし、RecyclerViewをNestedScrollView内に配置すると、RecyclerViewのスムーズなスクロールが妨げられます。スムーズなスクロールを取り戻すにはトリックがあります:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
recyclerViewのアダプターを設定した後、上記の行を挿入します。