CoordinatorLayout摺疊懸浮完美實現,解決Toolbar的title佈局中

簡單說CoordinatorLayout可以實現炫酷的頂部佈局到ActionBar的摺疊效果,經大量實驗總結,做一個筆記。
1、屬性介紹
AppBarLayout
它的直接子佈局都有一個layout_scrollFlags屬性,有五個值(舉例上面是CoordinatorLayout佈局內置Toolbar,下面是列表):
1、scroll可以滾動,其他牽扯到滾動的屬性都依賴這個屬性,結合使用纔有用。
2、app:layout_scrollFlags="scroll|enterAlways"往上滾動時,Toolbar逐漸顯示,但是會跟隨視圖滾出屏幕;往下滾動時,列表滾到頂部,Toolbar纔會顯示。
3、app:layout_scrollFlags="scroll|enterAlwaysCollapsed"往上滾動時,Toolbar逐漸顯示,但是會跟隨視圖滾出屏幕;往下滾動時,Toolbar立刻顯示,不用等列表滾到頂部。
4、app:layout_scrollFlags="scroll|snap"Toolbar在屏幕上顯示大於一半會完全彈出,小於一半會完全彈入,就是顯示與不顯示兩個狀態,不存在顯示一部分。
5、app:layout_scrollFlags="scroll|exitUntilCollapsed"在2的基礎上,Toolbar會停留在屏幕頂部。
CollapsingToolbarLayout
app:contentScrim Toolbar顯示時的背景色
app:scrimVisibleHeightTrigger 滾動到多高開始變色
app:collapsedTitleTextAppearance 摺疊式顯示的文本樣式
app:expandedTitleTextAppearance 展開時顯示的文本樣式
app:toolbarId 關聯的Toolbar的ID
android.support.v7.widget.Toolbar
layout_collapseMode 摺疊模式,pin是隨着往上滾動,parallax時要結合layout_collapseParallaxMultiplier=“0.5”,上下都往中間收縮。
app:title Toolbar顯示文本
app:navigationIcon 導航圖標

2、實現摺疊效果
我在Toolbar上面放了一個ImageVIew,當然也可以是一個ViewGroup。
佈局文件:

<?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:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appBarLayout"
        android:theme="@style/AppTheme.AppBarOverlay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbarLayout"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="@color/red"
            app:scrimVisibleHeightTrigger="150dp"
            app:collapsedTitleTextAppearance="@style/collapseditleTextAppearance"
            app:expandedTitleTextAppearance="@style/expandedTitleTextAppearance"
            app:toolbarId="@+id/toolBar"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/ivTop"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.5"
                android:src="@mipmap/img"
                android:adjustViewBounds="true"
                android:scaleType="fitXY" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolBar"
                app:layout_collapseMode="pin"
                app:title="ToolBar Title"
                app:popupTheme="@style/AppTheme.PopupOverlay"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize">

            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.CollapsingToolbarLayout>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@color/white"
            app:tabIndicatorColor="#ff5000"
            app:tabIndicatorHeight="2dp"
            app:tabMode="fixed"
            app:tabSelectedTextColor="#ff5000"
            app:tabTextColor="@color/black">

        </android.support.design.widget.TabLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="#aa000000" />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>

剛開始Toolbar的title顯示有問題,一直不水平居中:
在這裏插入圖片描述
網上都說什麼在Toolbar裏面放一個TextView,是可以解決,但是這個title的縮放效果就沒有了,然後我發現要在activity的onCreate中調用setSupportActionBar(toolBar);就可以了:
在這裏插入圖片描述

下集預告:沉浸式狀態欄,包括摺疊佈局的頂部顯示到狀態欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章