28157


AndroidStudioのActivity生成テンプレートからTannedActivityのActionBarTabs(with
ViewPager)を使ってアクティビティを作成しました。

[code]

    <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="hoge.TabActivity">
    
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/appbar_padding_top"
        android:theme="@style/AppTheme.AppBarOverlay">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">
    
        </android.support.v7.widget.Toolbar>
    
        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </android.support.design.widget.AppBarLayout>
    
    <android.support.v4.view.ViewPager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email" />
    
[/code]

layoutXMLは以上の通りで、ViewPagerにはRecyclerViewを含むページを与えています。  
RecyclerViewをスクロールするとToolBarのみが隠れてタブが見えるようになると想定していたのですが、  
[![スワイプしても](https://i.stack.imgur.com/vugDA.png)](https://i.stack.imgur.com/vugDA.png)

[![ToolBarが隠れない](https://i.stack.imgur.com/v1uuJ.png)](https://i.stack.imgur.com/v1uuJ.png)  
このようにToolBarが上にスライドするばかりで隠れてくれません。  
どのようにすれば正しくToolBarのみが隠れてタブだけが残るようになりますでしょうか


CC BY-SA 3.0
2016-08-09T10:36:44.047
28154
2016-08-09T13:17:18.107
18429
question
android java android-layout
CordinatorLayoutによるToolBarのアニメーション


[`CollapsingToolbarLayout`](https://developer.android.com/reference/android/support/design/widget/CollapsingToolbarLayout.html)を使えば実現できます。

`AppBarLayout`以下のレイアウトを示すと以下の通りです。

[code]

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="116dp"
        android:theme="@style/AppTheme.AppBarOverlay"
        android:fitsSystemWindows="true">
    
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_collapseMode="none"
                app:popupTheme="@style/AppTheme.PopupOverlay" />
    
            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                app:tabMode="fixed"/>
    
        </android.support.design.widget.CollapsingToolbarLayout>
    
    </android.support.design.widget.AppBarLayout>
    
[/code]

まず、TannedActivity テンプレートは横スワイプのみを想定しているので、`AppBarLayout` に
`android:fitsSystemWindows="true"` の指定がありません。これを追加してステータスバーにめりこむ挙動を直す必要があります。

`CollapsingToolbarLayout` を使う場合、`AppBarLayout`
に適切な高さを指定する必要があります。また、`TabLayout`に`android:layout_gravity="bottom"`を追加する必要があります。

`Toolbar` の `app:layout_collapseMode` の指定によって、スクロールに応じて `Toolbar`
をどのように変化させるのかを指定します。隠れて欲しい場合は、`none` を指定します。


CC BY-SA 3.0
2016-08-09T13:17:18.107
28157
2016-08-09T13:17:18.107
5337
28154
answer