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

1.TextInputLayout

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

1.添加依赖

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

compile 'com.android.support:design:23.1.1'

2.布局文件中添加控件

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

    <android.support.design.widget.TextInputLayout
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"> <EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="48dp"/>
</android.support.design.widget.TextInputLayout>

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

3.Activity中处理相关逻辑

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

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

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

设置hint:

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

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

        editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override
public void afterTextChanged(Editable s) {
String s1 = s.toString();
if (!s1.contains("@")) {
textInputLayout.setError("邮箱地址非法");
textInputLayout.setErrorEnabled(true);
}else{
textInputLayout.setErrorEnabled(false);
}
}
});

有木有觉得很easy。

2.FloatingActionButton

接下来我们再来看看FloatingActionButton.

1.基本属性

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

    <android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:id="@+id/fab"
android:onClick="btnClick"
app:backgroundTint="#ff0101"
app:borderWidth="0dp"
app:fabSize="normal"
app:elevation="10dp"
android:src="@android:drawable/ic_input_add"
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的,里边的代码也都很好懂,它的源码中有一个方法,如下:

final int getSizeDimension() {
switch (mSize) {
case SIZE_MINI:
return getResources().getDimensionPixelSize(R.dimen.design_fab_size_mini);
case SIZE_NORMAL:
default:
return getResources().getDimensionPixelSize(R.dimen.design_fab_size_normal);
}
}

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

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

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

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

OK ,很easy吧。

以上。

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

  1. android5.0联系人 sort_key改成phonebook_label

    项目中用到了联系人根据字母排序,在android4.0手机上是可以的,但是在android4.4以上的手机排序是乱的,一般字母排序都是根据sort_key这个拼音进行排序,而android5.0这个字 ...

  2. ANdroid5.0不能隐式启动service,必须显示,解决办法,加服务端包名

    Intent intent = new Intent(); intent.setAction("com.viaembedded.veonvif.RemoteService");// ...

  3. 一个Activity掌握Android5.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...

  4. android5.0 编译

    android5.0编译需要jdk1.7版本,将来本地可能需要同时维护两套jdk版本,请参考: 在线安装openjdk1.7 sudo apt-get install openjdk-7-jre op ...

  5. Eclipse搭建Android5.0应用开发环境 “ndk-build”:launchingfailed问题解决

    Eclipse搭建Android5.0应用开发环境 "ndk-build":launchingfailed问题解决 详细参考http://blog.csdn.net/loongem ...

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

    周末帮人完成一个项目,android5.0以上版本,谁知道被开发工具折腾的死去活来.我的开发环境是adt-bundle-windows-x86-20140702.zip版本,也是目前能找到的adt-b ...

  7. Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决

    Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决 附录1的Android Ripple Effect水 ...

  8. ANDROID5.0触摸屏校准

    1.校准原理: 1)首先生成校准用的参数,可以适用tslib生成校准参数,也可以使用校准app生成:使用校准app进行校准对使用者要求比较低,使用者可以不用学习复杂的命令:本文使用app方式 2)生成 ...

  9. Android5.0之Activity的转场动画

    Activity的转场动画很早就有,但是太过于单调,样式也不好看,于是Google在Android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下. 1.旧转场动画回顾 首先我 ...

随机推荐

  1. FastJSON学习

    这几天在用FastJSON,发现需要测试一些关键点,包括: 1.是否支持内部类:测试结果是支持,但是需要设置为静态类(static) 2.是否支持继承的自动序列化及反序列化:测试结果是支持 3.缺字段 ...

  2. 强制IE浏览器或WebBrowser控件使用指定版本显示网页2

    一.问题的提出 偶然发现,Winform里的WebBrowser和IE实际安装的版本似乎并不同步,很有趣! 下面有张图,里面一个窗口是用IE9打开某网站,另一个窗口是用Winform+WebBrows ...

  3. 【HDOJ】4162 Shape Number

    循环串的最小表示法. /* */ #include <iostream> #include <string> #include <map> #include < ...

  4. 推荐GitHub上10 个开源深度学习框架

    推荐GitHub上10 个开源深度学习框架   日前,Google 开源了 TensorFlow(GitHub),此举在深度学习领域影响巨大,因为 Google 在人工智能领域的研发成绩斐然,有着雄厚 ...

  5. C#面向对象编程实例-猜拳游戏

    1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Comput ...

  6. Linux kernel AACRAID Driver Compat IOCTL 本地安全绕过漏洞

    漏洞名称: Linux kernel AACRAID Driver Compat IOCTL 本地安全绕过漏洞 CNNVD编号: CNNVD-201311-390 发布时间: 2013-11-29 更 ...

  7. [HDU 1520] Anniversary party

    Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. -_-#【减少 DOM 访问】“离线”更新节点,再将它们添加到树中

    Minimize DOM Access javascript 之 DOM 优化 <!DOCTYPE html> <html> <head> <meta cha ...

  9. Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master

    转:http://***/html/blogs/20130407/1381.htm 最近做了一个项目管理系统,要求用Sharepoint,有个特别的功能就是通过创建出来的子站点要求应用同一个Maste ...

  10. MVC View基础

    View主要用于呈现数据.由于Controller和相关的Service已经处理完业务逻辑并将结果打包成model实体,View只需要怎么去获得model并将其转为Html 1选择需要渲染的视图 在上 ...