UI:Android 5.0&6.0 控件

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相关文章
SwipeRefreshLayout和CardView

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去掉:
    1. 通过配置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

DrawerLayout

6. DrawerLayout 与 home toggle的联动

  • 使用ActionBar:
DrawerLayout 绑定 ActionBar
  • 使用ToolBar:

    DrawerLayout 绑定ToolBar
  • 注意:如果和ToolBar结合使用,如果不修改home toggle的点击事件,默认会控制左侧边栏的滑动事件。

7. 自定义文本选择(TextSelection)菜单

  • 实现方法:

    • 让TextView可被选中
      android:textIsSelectable="true"
    • 给TextView添加callback
      tv.setCustomSelectionActionModeCallback(callback)
    • 实现callback
    callback

8. TextInputLayout

TextInputLayout
  • 实现方法:
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不会被覆盖
SnackBar

11. TabLayout

  • 使用方法:
    TabLayout结合ViewPager一起使用,起到指示器的作用,跟三方的ViewPagerIndicator作用一样
TabLayout

12. NavigationView

  • 使用方法:
    放在DrawerLayout中,作为菜单的部分
NavigationView
  • 注意:
    fitsSystemWindows = “true”这个属性,在做沉浸式状态栏时,必须配置,非常重要,沉浸式状态栏的要点:
  1. 状态栏设置为背景透明 (只在4.4以上的系统设备生效)
  2. fitsSystemWindows = “true”的意义在于让配置该属性的控件侵入状态栏的同时,设置跟状态栏等高度的padding值,从而不让控件中的内容发生偏移

13. AppBarLayout

  • 介绍:
    继承自LinearLayout,内部可以包含子控件,并且会自动给子控件添加与ActionBar同背景颜色的背景色(primaryColor配置的颜色) ,可以作为一个整体替换ActionBar所在的区域,制造更多样的ActionBar
AppBarLayout

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 固定不动
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容