CollapsingToolbarLayout及Toolbar

来源:互联网 发布:黑马程序员java毕业生 编辑:程序博客网 时间:2024/05/19 12:41

修改Toolbar的返回按钮图标:

<android.support.v7.widget.Toolbar    android:id="@+id/toolbar"    android:layout_width="match_parent"    android:layout_height="?android:actionBarSize"    app:layout_collapseMode="pin"    app:navigationIcon="@mipmap/back"    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

layout_collapseMode=”pin”
设置为这个模式时,当CollapsingToolbarLayout完全收缩后,Toolbar还可以保留在屏幕上
pin:在滑动过程中,此自布局会固定在它所在的位置不动,直到CollapsingToolbarLayout全部折叠或者全部展开
app:layout_collapseMode=”parallax”
视察效果,在滑动过程中,不管上滑还是下滑都会有视察效果

<android.support.design.widget.CollapsingToolbarLayout      android:id="@+id/collapsing_toolbar"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:fitsSystemWindows="true"      app:contentScrim="@color/peron_bacground"      app:collapsedTitleGravity="left"      app:expandedTitleGravity="center_horizontal"        app:expandedTitleMarginBottom="@dimen/collapsing_toolbar_layout_title_marginbottom"app:expandedTitleTextAppearance="@style/ExpandTitleStyle"app:layout_scrollFlags="scroll|exitUntilCollapsed|enterAlways">

app:contentScrim
设置当完全CollapsingToolbarLayout折叠(收缩)后的背景颜色
app:collapsedTitleGravity=”left”
折叠后标题的位置
app:expandedTitleGravity=”center_horizontal”
展开后标题的位置
app:expandedTitleMarginBottom
展开后标题距离底部大小
app:collapsedTitleTextAppearance
这是在收缩时Title文字特点外形的设置
app:expandedTitleTextAppearance
同理这是在展开时Title文字特点外形的设置
app:expandedTitleMarginStart
设置扩张时候(还没有收缩时)title向左填充的距离
app:expandedTitleMarginEnd
这个同理是收缩结束时向左填空的距离

我在做这里的时候遇到一个问题,那就是CollapsingToolbarLayout里的Title的问题,一般默认是显示的,即使你不写,它也有会一个默认值一直显示在那里,等折叠收缩完的时候,停留在标题工具栏上。怎么消除这个默认值呢?怎么知道收缩完成了,再把这个值设置出来呢?这里我对AppBarLayout设置了一个监听,它有一个监听方法:addOnOffsetChangedListener监听折叠收缩的位移。如下:

app_bar_layout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {    @Override    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {        if (verticalOffset <= -head_layout.getHeight() / 2)     {            mCollapsingToolbarLayout.setTitle("xx");        } else {            mCollapsingToolbarLayout.setTitle(" ");        }    }        });
0 0