Android5.0之TextInputLayout、FloatingActionButton的使用

TextInputLayout和FloatingActionButton都属于MD风格的控件,比起普通的EditText和Button、ImageButton,TextInputLayout和FloatingActionButton还是有很多炫酷的地方,今天我们就一起来看一下。

1.TextInputLayout

TextInputLayout这个控件主要是配合EditText来使用的,以前在EditText中我们经常需要给EditText设置一个hint属性告诉用户这里输入什么,但是用户有可能输着输着就忘了这里该输入什么了,如果有一个控件能够完美解决这个问题就好了,于是乎,在Android M中,Google新推出了TextInputLayout,完美的解决了这个问题。OK,接下来我们就来看看这个东东要怎么使用。

1.添加依赖

毫无疑问,使用TextInputLayout我们首先要添加依赖,将design包加入到我们的项目中,如下:

[java] view plain copy print?

  1. compile ‘com.android.support:design:23.1.1‘

2.布局文件中添加控件

接下来我们需要在Activity中添加相关的控件,我们说TextInputLayout是配合着EditText来使用的,实际用法就是用TextInputLayout将EditText包裹起来,如下:

[java] view plain copy print?

  1. <android.support.design.widget.TextInputLayout
  2. android:id="@+id/text_input_layout"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content">
  5. <EditText
  6. android:id="@+id/username"
  7. android:layout_width="match_parent"
  8. android:layout_height="48dp"/>
  9. </android.support.design.widget.TextInputLayout>

实际上,如果没有特殊需要,你甚至连EditText的id都不需要给,那有的筒子可能有疑问了,不给id那我怎么样获取在EditText中输入的内容呢?请接着往下看

3.Activity中处理相关逻辑

接下来我们看看如何在Activity中处理输入控件的相关逻辑操作。

首先查找到该控件,并获取到该控件中的EditText,如下:

[java] view plain copy print?

  1. textInputLayout = (TextInputLayout) findViewById(R.id.text_input_layout);
  2. editText = textInputLayout.getEditText();

设置hint:

[java] view plain copy print?

  1. textInputLayout.setHint("请输入邮箱地址!");

请大家注意hint是给谁设置。然后我希望用户在EditText中输入一个邮箱地址,不过这个邮箱地址我不想做过多的验证,毕竟我这里不是想说正则,我只要包含一个@符号就认为是一个合法的邮箱,我们来看看怎么实现:

[java] view plain copy print?

  1. editText.addTextChangedListener(new TextWatcher() {
  2. @Override
  3. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  4. }
  5. @Override
  6. public void onTextChanged(CharSequence s, int start, int before, int count) {
  7. }
  8. @Override
  9. public void afterTextChanged(Editable s) {
  10. String s1 = s.toString();
  11. if (!s1.contains("@")) {
  12. textInputLayout.setError("邮箱地址非法");
  13. textInputLayout.setErrorEnabled(true);
  14. }else{
  15. textInputLayout.setErrorEnabled(false);
  16. }
  17. }
  18. });

有木有觉得很easy。

2.FloatingActionButton

接下来我们再来看看FloatingActionButton.

1.基本属性

我在之前的博客中谈到过CoordinatorLayout协调者布局的使用,在协调者布局中,我们可以让一个FloatingActionButton悬挂在AppBar上,然后这个FloatingActionButton会随着头部的折叠慢慢的消失。当然,FloatingActionButton的使用不仅仅局限于这里,我们也可以在普通的容器中来使用FloatingActionButton,如下:

[java] view plain copy print?

  1. <android.support.design.widget.FloatingActionButton
  2. android:layout_width="wrap_content"
  3. android:id="@+id/fab"
  4. android:onClick="btnClick"
  5. app:backgroundTint="#ff0101"
  6. app:borderWidth="0dp"
  7. app:fabSize="normal"
  8. app:elevation="10dp"
  9. android:src="@android:drawable/ic_input_add"
  10. android:layout_height="wrap_content"/>

这里有几个属性我需要介绍一下:

1.app:backgroundTint表示FAB的背景颜色(当然你也可以通过修改colors.xml中的colorAccent的值来修改FAB的背景颜色)

2.app:borderWidth表示FAB的圆环宽度(设置该宽度之后,当你按下FAB时,只有中心一部分被按下)

3.app:fabSize表示FAB的大小,有两种取值,分别是normal和mini两种

4.app:elevation表示FAB的Z轴高

显示效果:

2.修改大小

对于1中介绍的app:fabSize属性不知道筒子们有没有疑问,如果你想给FAB设置其他的大小该怎么做呢,我们来稍微看一下源码。

打开FAB的源码,我们发现FAB是继承自ImageButton的,里边的代码也都很好懂,它的源码中有一个方法,如下:

[java] view plain copy print?

  1. final int getSizeDimension() {
  2. switch (mSize) {
  3. case SIZE_MINI:
  4. return getResources().getDimensionPixelSize(R.dimen.design_fab_size_mini);
  5. case SIZE_NORMAL:
  6. default:
  7. return getResources().getDimensionPixelSize(R.dimen.design_fab_size_normal);
  8. }
  9. }

很明显该方法就是获取控件的大小,但是我们并没有在res中的values文件夹中的dimen文件中定义这些变量呀,其实变量就在我们引入的design包中,将功工程的视图调整为Project,我们看到如下目录:

values文件中定义了这个控件预设的两种大小:

那么如果你想重新定义mini和normal的值只需要在你的dimens.xml文件中覆写这两个值就可以了,如下:

[java] view plain copy print?

  1. <dimen name="design_fab_size_mini">80dp</dimen>
  2. <dimen name="design_fab_size_normal">112dp</dimen>

OK ,很easy吧。

以上。

时间: 2024-10-27 01:45:41

Android5.0之TextInputLayout、FloatingActionButton的使用的相关文章

Android5.0 新特性学习总结

参考文章: 极客学院 –Material Design 中文版图文教程 几行代码,让你的 APP 变得花俏-Android Design Support Library 代码实验 material design 的android开源代码整理 低版本android上实现Material design应用 Android5.0版本,推出了Material Design的概念,这是在设计上Android的又一大突破.对应的程序实现上就有如 Theme.Material.Light. Theme.Mat

Android5.0以上系统的移动网络开关

笔者近期遇到一个非常有意思的bug,贴出来和大家分享下. 那是一个温暖的早晨,阳光晒得人非常舒服.一封bug邮件像一片叶子飘到我的邮箱. 一番交流.笔者确认负责的Widget开关在Android5.0以上系统没有作用.相信非常多做过移动网络开关的朋友都知道.传统的方法是在ConnectivityManager中通过反射两个方法setMobileDataEnabled和getMobileDataEnabled来控制移动网络开和关的. /** * Gets the value of the sett

友情提醒:欲开发android5.0以上应用,请全部更新开发工具至最新

周末帮人完成一个项目,android5.0以上版本,谁知道被开发工具折腾的死去活来.我的开发环境是adt-bundle-windows-x86-20140702.zip版本,也是目前能找到的adt-bundle的最新版本.也升级至最新的adt和platform,但开发5.0的项目还是一堆错误: 错误1:动不动就报AndroidManifest.xml is missing的错误,为了解决这个问题每次都要将.android 和 开发空间里的.metadata,然后重启eclipse,真痛苦啊! 错

Android5.0之后的页面切换动画

Android5.0之后给我们开发者剩了好多的事情,为什么这么说呢?还记得刚开始的时候,Android里面的所有的动画都要我们开发者自己来写,现在不需要了,因为5.0之后自带了好多的动画,比如:按钮点击的动画.页面切换的动画(在android5.0之前想都不敢想的). 今天我着重讲一下页面之间的切换,目前5.0系统自带了三种动画方式:Explode(缩放).Fade(淡入淡出).Slide(滑动进入).下面就这三中方式进行介绍一下. 在讲解之前,现对于动画的方式进行介绍一下.通常,我们进行页面跳

Android5.0以上app进程保活的正确姿势

我的原文: http://blog.csdn.net/brycegao321/article/details/52312030 有图有真相,  亲测锤子T2.华为Mate8手机杀掉进程后能自启, 我设置的自启时间间隔为500ms(仅仅是为了测试).     首先要明确保活的概念: 1.非android核心进程(例如com.android.phone)都可以被干掉: 2.保活并不能真正的保证app进程不死,  而是能在被干掉后马上启动: Android系统按照进程的优先级分为: 1. 前台进程(F

ANDROID5.0触摸屏校准

1.校准原理: 1)首先生成校准用的参数,可以适用tslib生成校准参数,也可以使用校准app生成:使用校准app进行校准对使用者要求比较低,使用者可以不用学习复杂的命令:本文使用app方式 2)生成校准参数后,以后驱动每次接收到触摸事件就会使用校准参数进行校准 2.校准app 校准功能完全实现在在src目录里的MainActivity.java里,内容如下: package com.wss.calibrate2; import android.app.Activity;import andro

android5.0之toolBar

toolBar是android5.0之后提出的,可以简单的理解为ActionBar的升级版吧,在5.0之后,官方推荐使用ToolBar!下面开启ToolBar的正文(老样子,有问题请指正,有疑问,偶们共同讨论!嘎嘎......) ①toolBar是5.0之后提出的,那么低版本的该怎么办啊?老规矩咯,引入V7包'com.android.support:appcompat-v7:22.1.1',就是介个!(注意:下面的一些类都是V7包里的,不要写错了!!!) ②V7包引入之后,还是不可以直接使用to

Android自定义组件系列【14】——Android5.0按钮波纹效果实现

今天任老师发表了一篇关于Android5.0中按钮按下的波纹效果实现<Android L中水波纹点击效果的实现>,出于好奇我下载了源代码看了一下效果,正好手边有一个Nexus手机,我结合实际效果看了一下,发现有一些地方和实际效果稍有不同,参考任老师的博文实现简单实现了一个重写View组件的代码,将全部代码贴出,如果有什么问题或者更好的方式请指出,在此再次感谢任老师的这篇博文. 转载请说明出处:http://blog.csdn.net/dawanganban 顺便在这里拉一下票,如果你觉得这篇文

android5.0开发必备版本和JDK环境配置

android5.0开发必备版本: JDK-1.8-x64; NDK-10-x64; ADT-5.0&4.0-x64; 谷歌代理: https://wen.lu/?gfe_rd=cr&ei=Ir7YU5XsOK3J8ge_24GgBQ&gws_rd=cr 也可用FQ软件:goagent,或FQ浏览器 goagent: https://github.com/goagent/goagent 配置地址:http://www.woshipm.com/it/13644.html JDK配置(