说明:这边使用的组件都是第三方库,所以都需要添加依赖,依赖的内容看组件的声明,其版本号查官网。
- Toolbar
使用步骤:
1) 修改style属性
(Theme.AppCompat.Light.NoActionBar主体浅色,陪衬暗色
Theme.AppCompat.NoActionBar 主体深色,陪衬浅色)
注意:在里面可以有多个属性的颜色进行修改,具体属性如下:
2) 在布局文件加一个toolbar组件
注意:theme为toolbar的主题颜色,popupTheme为菜单主题颜色
3) 在activity中得到实例,并且调用setSupportActionBar(实例)方法将toobal显示在界面。
补充:给toolbar改变标题内容
加强:给toolbar加菜单
1)在res里面添加菜单文件,并创建菜单根文件
2)在activity中将菜单加入(其会自动加入我们的toolbar中)
2. 滑动菜单:将一些菜单选项隐藏起来,而不是放置在主屏幕上
1) DrawerLayout
用法:
注意:第二个子控件的layout_gravity这个属性必须指定,其功能是指定我们隐藏的菜单是在屏幕的左边还是右边,start代表左边,end代表右边。
特殊:给特定的按钮添加滑动功能
注意:如果不修改图标,其是使用默认返回按钮,并且我们监听时的滑动顺序必须和我们组件的状态一样。
2) NavigationView(定义滑动菜单的组件)
使用步骤:
1)
2).menu文件(定义滑动菜单内容)
注意:
3) .nav_header.xml文件(定义菜单中的标题)
4)activity_main.xml(使用NavigationView组件)
注意:这个组件直接引用了布局和菜单,从而形成自己的形状。
5 )给我们的菜单选项设置初始点击对象和定义点击事件
3.悬浮按钮和可交互提示
1)FloatingActionButton(悬浮按钮)
介绍:,所以需要添加依赖。
使用步骤:
- 1. 在布局里面定义该组件
注意:
2. 给悬浮按钮添加监听器
2)Snackbar(可交互提示)
介绍:Snackbar不是Toast替代品,其是额外增加一个按钮的点击事件,从而再使用Toast等。
使用步骤:
3) CoordinatorLayout(加强版的FrameLayout)
功能:可以确保初期里面不会遮挡的组件,当突然有组件增加时,也不会互相遮挡。
4.卡布式布局
1)CardView
介绍:其就是一个FrameLayout的升级版,只是额外提供了圆角和阴影等效果,看上去会有立体的感觉。
用法:
2) AppBarLayout
介绍:其是一个垂直方向的LinearLayout,他在内部做了很多滚动事件的封装,并应用了Material Design的设计理念,就是可以处理返回来的信息,下面有例子。
问题:如果直接在CoordinatorLayout加toolbar和recycleview,recycleview会遮挡toolbar。
使用步骤:
1. 将toolbar嵌套到AppBarLayout中
2. 给RecycleView指定一个布局行为。
5.下拉刷新
介绍:我们实现下拉刷新功能的核心类是SwipeRefreshLayout,它是由support-v4库提供的,我们想要实现下拉刷新功能,只需要将我们要刷新的控件放置到SwipeRefreshLayout中。
使用步骤:
1) 在布局文件中,将SwipeRefreshLayout加入
2) 进行逻辑性处理刷新事件
4) 可折叠式标题栏
引言:我们之前使用的标题栏都是标准化的,在Material Design中并没有限定标题栏必须是长什么样,我们可以根据自己的喜好随意定制自己喜欢的样式,而CollapsingToolbarLayout可以实现一个可折叠式标题栏的效果。
使用注意点说明:其只能作为AppBarLayout的直接子布局使用,而AppBarLayout又必须是CoordinatorLayout的子布局。
使用步骤:
1) 在布局文件中定义标题内容(背景图,标题栏)(CollapsingToolbarLayout属性内)
2) 添加内容(一般使用NestedScrollview(可滑动组件),里面还可放布局)
3) 如果可以,还可加悬浮按钮(注意,如果完全折叠状态,只有标题栏)
4) 将该布局定义在activity中
实例:
注意:这边的悬浮按钮是在标题栏的右下方,不是界面的右下方,两者属性不同。
5) 折叠式标题栏的加强版(将背景图和标题栏风格融合)
步骤:
1) 给标题栏中的ImageView以及其布局结构的所有父布局都设置上
Android:fitsSystemWindows属性为true
2) 将状态栏颜色指定成透明色
3) 修改AndroidManifest.xml文件,指定我们要的activity使用的主题
实现:
1)
2)
3)