CoordinatorLayoutの使用に関してGoogleドキュメントを追おうとしていますが、CoordinatorLayout内のScrollViewに問題があります。基本的に、ツールバーは通常、下にスクロールするとRecyclerViewまたはListviewで折りたたまれます。 ScrollViewを使用すると、折りたたまれません。
<Android.support.design.widget.CoordinatorLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<TextView
Android:id="@+id/tv_View"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center"
Android:gravity="center"
Android:text="@string/filler"
style="@style/TextAppearance.AppCompat.Large"
/>
</ScrollView>
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
/>
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
ScrollView
はCoordinatorLayout
と連携しません。 NestedScrollView
の代わりにScrollView
を使用する必要があります
NestedScrollViewを使用して、ScrollviewをCoordinator Layoutの子として折りたたみます。コードを次のコードに置き換えます。
<Android.support.design.widget.CoordinatorLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<TextView
Android:id="@+id/tv_View"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center"
Android:gravity="center"
Android:text="@string/filler"
style="@style/TextAppearance.AppCompat.Large"
/>
</LinearLayout>
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
/>
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
ScrollView
を保持し、次のXMLプロパティを追加できます:Android:nestedScrollingEnabled="true"
したがって、CoordinatorLayoutを兄弟として認識し、このプロパティはLollipop version and aboveでのみサポートされることに留意してください。
NestedScrollView
を使用する場合、通常のScrollView
の代わりにCoordinatorLayout
を使用します。
CollapsingToolbarLayout
をスクロールするには、NestedScrollView
の子レイアウトの最小の高さを* 1000dpに設定することでスクロール動作をトリガーできます。Android:minHeight="1000dp"
レイアウト:
<Android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!--to trigger scroll behavior-->
<LinearLayout Android:minHeight="1000dp"/>
</Android.support.v4.widget.NestedScrollView>
*ここにSupportDesignDemosの例: https://github.com/Android/platform_development/blob/master/samples/SupportDesignDemos/res/layout/include_appbar_scrollview.xml
実際の答えは、CoordinatorLayout
が NestedScrollingChild インターフェイスを実装していないため、ScrollView
はScrollView
では機能しないということです。 NestedScrollView
は、ScrollView
を実装したNestedScrollingChild
です。ネストされたスクロールについて詳しく知りたい場合は、 ブログ投稿 を作成しました。