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