1. SwipeRefreshLayout
- 注意:该控件属于support-v4包,早期版本就已经存在。
-
使用方法:
包裹一个可以上下滚动的View(比如ScrollView、ListView、RecyclerView),即可实现下拉刷新。 - 主要方法:
- setRefreshListener -- 添加下拉刷新监听
- setRefreshing(boolean) -- 设置圆圈显示与隐藏
- isRefreshing -- 判断当前是否正在刷新
- setColorSchemeResource -- 设置转圈的多种颜色变化(color的资源id)
- setColorSchemeColors -- 设置转圈的多种颜色变化(color颜色值)
- setProgressBackgroundColor -- 设置圆圈的背景色
2. CardView
-
使用方法:
自带阴影(z轴海拔)的控件,该View继承自FrameLayout,直接作为父布局包裹子控件。 - 注意:如果父控件和CardView之间没有空隙,阴影可能无法显示,原因见Material Design相关文章
3. RecyclerView
-
介绍:
可以实现列表、多列列表、瀑布流的效果,用来替代ListView、GridView,并且实现了NestedScrollingChild接口,其事件可以被CoordinatorLayout捕获。 - 使用方法:
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
//GridLayoutManager layoutManager = new GridLayoutManager(this,3);
//StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new MyAdapter(this));
MyAdapter需要继承RecyclerView.Adapter<自定义的ListHolder继承RecyclerView.ViewHolder>,如果需要Item点击事件,需要自己添加并提供回调接口。
4. ToolBar
-
介绍:
利用support-v7的方式向下兼容,用来替代传统的ActionBar,相比传统的ActionBar,ToolBar的自由度更高,他是ViewGroup的子类,可以作为一个控件,放在界面的任何位置。 - 使用方法:
- 将界面原有的ActionBar去掉:
- 通过配置NoTitle的主题
supportRequestWindowFeature(Window.FEATURE_NO_TITLE),需在setContentView之前。
- 设置ToolBar:setSupportActionBar(toolbar)
- 主要方法:
// 设置LOGO
mToolBar.setLogo(R.drawable.ic_launcher);
// 设置导航按钮图片
mToolBar.setNavigationIcon(R.drawable.head_1);
// 设置主标题(不设置就显示APP的名称)
mToolBar.setTitle("主标题");
// 设置次级标题
mToolBar.setSubtitle("副标题");
// 设置主标题的颜色
mToolBar.setTitleTextColor(Color.RED);
// 设置次级标题的颜色
mToolBar.setSubtitleTextColor(Color.GREEN);
5. DrawerLayout
DrawerLayout6. DrawerLayout 与 home toggle的联动
- 使用ActionBar:
-
使用ToolBar:
DrawerLayout 绑定ToolBar -
注意:如果和ToolBar结合使用,如果不修改home toggle的点击事件,默认会控制左侧边栏的滑动事件。
7. 自定义文本选择(TextSelection)菜单
-
实现方法:
- 让TextView可被选中
android:textIsSelectable="true"
- 给TextView添加callback
tv.setCustomSelectionActionModeCallback(callback)
- 实现callback
- 让TextView可被选中
8. TextInputLayout
TextInputLayout- 实现方法:
- 添加错误提醒:
9. FloatingActionButton(FAB)
-
使用方法:
与ImageView类似
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
//解决5.X阴影不正常显示
app:borderWidth="0dp"
android:layout_margin="@dimen/margin"
android:src="@drawable/ic" />
10. SnackBar
-
使用方法:
用法和Toast差不多,当用在CoordinatorLayout中时,与FAB一起使用,能实现同上同下的效果,FAB不会被覆盖
11. TabLayout
-
使用方法:
TabLayout结合ViewPager一起使用,起到指示器的作用,跟三方的ViewPagerIndicator作用一样
12. NavigationView
-
使用方法:
放在DrawerLayout中,作为菜单的部分
-
注意:
fitsSystemWindows = “true”这个属性,在做沉浸式状态栏时,必须配置,非常重要,沉浸式状态栏的要点:
- 状态栏设置为背景透明 (只在4.4以上的系统设备生效)
- fitsSystemWindows = “true”的意义在于让配置该属性的控件侵入状态栏的同时,设置跟状态栏等高度的padding值,从而不让控件中的内容发生偏移
13. AppBarLayout
-
介绍:
继承自LinearLayout,内部可以包含子控件,并且会自动给子控件添加与ActionBar同背景颜色的背景色(primaryColor配置的颜色) ,可以作为一个整体替换ActionBar所在的区域,制造更多样的ActionBar
14. CoordinatorLayout
-
介绍
协调内部子控件间的滚动事件,通常作为最外层的布局使用,通过配置CoordinatorLayout.Behavior这个行为属性,可以控制其内部子控件间的联动效果,AppBarLayout和FloatingActionButton具有默认的Behavior实现 - 注意:
- CoordinatorLayout只可以捕获到实现了NestedScrollingChild接口的子view的滚动事件,然后分发给其他内部子view
- RecyclerView
- NestedScrollView -- 和ScrollView一样效果,可以被捕获事件
- SwipeRefreshLayout
- AppBarLayout中的子view是否响应滚动事件,通过给子view配置app:layout_scrollFlags属性来指定不同的滚动事件响应
- scroll(常用) 响应滚动事件,必须配置这个属性
- enterAlways(常用) 滚动事件向下,配置该属性的子view就会向下滚动进入,AppBarLayout中的子view需要滚动的,必须放在最顶部,否则滚不动
- enterAlwaysCollapsed 滚动事件向下,子view也配置了最小高度,那么向下滚动时,子view会以最小高度进入,只有当被监听的view滚动到顶端时,子view才会以最大高度展开
- snap 该属性会判断子view底部能看到多少,如果只能看到25%,那么缩回去,如果能看到75%,那么完全显示
- exitUntilCollapsed 子view滚出屏幕时,待其完全折叠之后才滚动,常用在CollapsingToolbarLayout中
15. NestedScrollView
-
介绍:
实现了NestedScrollingChild接口,所以他的滚动事件可以被CoordinatorLayout协调,用来代替ScrollView。
16. CollapsingToolbarLayout
-
介绍:
折叠视图效果,注意,其并没有完全折叠,所以配置exitUntilCollapsed属性后,其不会完全滚出屏幕,而会在屏幕中保留一个ActionBar的高度。继承自FrameLayout,内部子控件可以配置layout_collapseMode属性,展示不同的效果 - none
- parallax 视差模式
- pin 固定不动
网友评论