前言
Design Support Library是Google在2015年的IO大会上发布的全新Material Design支持库,在这个support库里面主要包含了 8 个新的 Material Design组件,最低支持 Android 2.1。
Widget Name | Description |
---|---|
TextInputLayout | EditText辅助控件 |
FloatingActionButton | MD风格的圆形按钮 |
Snackbar | 提示框 |
TabLayout | 选项卡 |
NavigationView | DrawerLayout的侧滑界面 |
CoordinatorLayout | 超级FrameLayout |
AppBarLayout | MD风格的滑动Layout |
CollapsingToolbarLayout | 可折叠的MD风格ToolbarLayout |
adding dependencies
implementation 'com.android.support:design:28.0.0'
1.CoordinatorLayout
CoordinatorLayout是用来组织它的子Views之间协作的一个父View。CoordinatorLayout默认情况下可理解成一个FrameLayout,它的布局方式默认是一层一层叠上去
组合使用
CoordinatorLayout是一种支持响应滚动手势的app bar布局与AppbarLayout组合的滚动布局(RecyclerView, NestedScrollView等)
滚动布局添加,如不添加响应布局AppbarLayout则不会响应滑动事件
app:layout_behavior = "@string/appbar_scrolling_view_behavior"
app:layout_behavior = "android.support.design.widget.AppBarLayout$ScrollingViewBehavior"
2.AppbarLayout
AppBarLayout 继承自LinearLayout,布局方向为垂直方向。
所以你可以把它当成垂直布局的LinearLayout来使用。
AppBarLayout是在LinearLayout上加了一些材料设计的概念,它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。
实现动作 app:layout_scrollFlags
scroll
值设为scroll的View会跟随滚动事件一起发生移动。就是当指定的ScrollView发生滚动时,该View也跟随一起滚动,就好像这个View也是属于这个ScrollView一样
enterAlways
值设为enterAlways的View,当任何时候ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动到最顶部还是哪里
exitUntilCollapsed
值设为exitUntilCollapsed的View,当这个View要往上逐渐“消逝”时,会一直往上滑动,直到剩下的的高度达到它的最小高度后,再响应ScrollView的内部滑动事件
enterAlwaysCollapsed
是enterAlways的附加选项,一般跟enterAlways一起使用,它是指,View在往下“出现”的时候,首先是enterAlways效果,当View的高度达到最小高度时,View就暂时不去往下滚动,直到ScrollView滑动到顶部不再滑动时,View再继续往下滑动,直到滑到View的顶部结束
snap
简单理解,就是Child View滚动比例的一个吸附效果。也就是说,Child View不会存在局部显示的情况,滚动Child View的部分高度,当我们松开手指时,Child View要么向上全部滚出屏幕,要么向下全部滚进屏幕,有点类似ViewPager的左右滑动
3.CollapsingToolbarLayout
用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠的App Bar效果。它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View
app:layout_collapseMode
title
当布局内容全部显示出来时,title是最大的,但是随着View逐步移出屏幕顶部,title变得越来越小。你可以通过调用setTitle方法来设置title
contentScrim
内容纱布 根据滚动的位置是否到达一个阀值,来决定是否对View“盖上纱布”。可以通过setContentScrim(Drawable)来设置纱布的图片. 默认contentScrim是colorPrimary的色值
parallax
视差滚动子View 子View可以选择在当前的布局当时是否以“视差”的方式来跟随滚动\n
pin
子View可以选择是否在全局空间上固定位置,这对于Toolbar来说非常有用,因为当布局在移动时,可以将Toolbar固定位置而不受移动的影响