スクロールの動きとToolbarの表示の連動の仕方にはいろいろある。
前回のように、activity_main.xmlで、
xml version="1.0" encoding="utf-8"
<androidsupportdesignwidgetCoordinatorLayout
xmlnsandroid="http://schemas.android.com/apk/res/android"
xmlnsapp="http://schemas.android.com/apk/res-auto"
androidlayout_width="match_parent"
androidlayout_height="match_parent">
<androidsupportdesignwidgetAppBarLayout
androidid="@+id/appbar1"
androidlayout_width="match_parent"
androidlayout_height="wrap_content" >
<Toolbar
androidid="@+id/toolbar1"
androidlayout_width="match_parent"
androidlayout_height="?android:attr/actionBarSize"
androidbackground="@color/colorPrimary"
applayout_scrollFlags="scroll|enterAlways" />
</androidsupportdesignwidgetAppBarLayout>
<androidsupportv4widgetNestedScrollView
androidlayout_width="match_parent"
androidlayout_height="match_parent"
applayout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
androidid="@+id/textview_longtext"
androidlayout_width="match_parent"
androidlayout_height="wrap_content"
androidtext="@string/textview_longtext_text" />
</androidsupportv4widgetNestedScrollView>
</androidsupportdesignwidgetCoordinatorLayout>
AppBarLayoutでapp:layout_scrollFlags="scroll|enterAlways"の場合は、
1番下まで行って、上に戻ろうとすると、
すぐToolbarが出てくる。
どんな位置からでも上に戻ろうとしたときにToolbarが連動して出てくる。
xml version="1.0" encoding="utf-8"
<androidsupportdesignwidgetCoordinatorLayout
xmlnsandroid="http://schemas.android.com/apk/res/android"
xmlnsapp="http://schemas.android.com/apk/res-auto"
androidlayout_width="match_parent"
androidlayout_height="match_parent">
<androidsupportdesignwidgetAppBarLayout
androidid="@+id/appbar1"
androidlayout_width="match_parent"
androidlayout_height="wrap_content" >
<Toolbar
androidid="@+id/toolbar1"
androidlayout_width="match_parent"
androidlayout_height="?android:attr/actionBarSize"
androidbackground="@color/colorPrimary"
applayout_scrollFlags="scroll|enterAlwaysCollapsed" />
</androidsupportdesignwidgetAppBarLayout>
<androidsupportv4widgetNestedScrollView
androidlayout_width="match_parent"
androidlayout_height="match_parent"
applayout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
androidid="@+id/textview_longtext"
androidlayout_width="match_parent"
androidlayout_height="wrap_content"
androidtext="@string/textview_longtext_text" />
</androidsupportv4widgetNestedScrollView>
</androidsupportdesignwidgetCoordinatorLayout>
しかし、app:layout_scrollFlags="scroll|enterAlwaysCollapsed"にすると、
下まで行って、上に戻っても、
出てこない。
リストの1番上のところまで戻って初めて出てくる。
スクロールにはもうひとつ、
app:layout_scrollFlags="scroll|exitUntilCollapsed"
というフラグがあるが、これはCollapsingToolbarLayoutで使う。
CollapsingToolbarLayout | Android Developers
Androidのマテリアルデザイン ~スクロール連動~ (2/3):CodeZine(コードジン)
これらを使うと、Toolbarを伸縮しつつ、一定のところで止める事ができる。
xml version="1.0" encoding="utf-8"
<androidsupportdesignwidgetCoordinatorLayout
xmlnsandroid="http://schemas.android.com/apk/res/android"
xmlnsapp="http://schemas.android.com/apk/res-auto"
androidlayout_width="match_parent"
androidlayout_height="match_parent">
<androidsupportdesignwidgetAppBarLayout
androidid="@+id/appbar1"
androidlayout_width="match_parent"
androidlayout_height="200dp" >
<androidsupportdesignwidgetCollapsingToolbarLayout
androidid="@+id/collapsing1"
androidlayout_width="match_parent"
androidlayout_height="match_parent"
applayout_scrollFlags="scroll|exitUntilCollapsed" >
<Toolbar
androidid="@+id/toolbar1"
androidlayout_width="match_parent"
androidlayout_height="?android:attr/actionBarSize"
androidbackground="@color/colorPrimary"
applayout_collapseMode="pin" />
</androidsupportdesignwidgetCollapsingToolbarLayout>
</androidsupportdesignwidgetAppBarLayout>
<androidsupportv4widgetNestedScrollView
androidlayout_width="match_parent"
androidlayout_height="match_parent"
applayout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
androidid="@+id/textview_longtext"
androidlayout_width="match_parent"
androidlayout_height="wrap_content"
androidtext="@string/textview_longtext_text" />
</androidsupportv4widgetNestedScrollView>
</androidsupportdesignwidgetCoordinatorLayout>
AppBarLayoutで200dpにすることで、最初の高さは200dpになる。
CollapsingToolbarLayoutを中に入れて、そちらにapp:layout_scrollFlags="scroll|exitUntilCollapsed"を指定。
Toolbarでapp:layout_collapseMode="pin"を指定。
一番小さくなった時の高さは、android:layout_height="?android:attr/actionBarSize"に基づくから、Toolbarのデフォルトの高さのはず。
最初は200dpだからこれぐらい大きくなる。
下に行くとどんどん小さくなる。
あれ?止まらない・・・。
消えてしまった・・・。
本当ならToolbarの高さより小さくはならないようにどこも書いてあるのだが・・・。
いろいろなCoordinatorLayoutパターン - Qiita
上記の記事などいろいろ見たけど、
android:minHeight="?android:attr/actionBarSize"を付けたら、
ここから、
小さくなって、
ここからは小さくならなくなった。
でも、付けてない記事もあるので何が違うのだろうか・・・。
Sample/android/CollapsingToolbarLayout/CollapsingToolbarLayout/CollapsingToolbarLayout_ at master · bg1bgst333/Sample · GitHub