TextInputLayout是Android 5.0新特性——Material Design中的一个布局控件,主要用来嵌套EditText,实现数据输入时的一些效果,如:

  • 当输入框获取焦点时,输入提示语会动画移动到输入框上方;
  • 当输入框失去焦点时,如果输入框中没有文本,则提示语动画移动回到输入框中;
  • 当输入不合规范时,会在输入框下方显示错误提示语;
  • 当输入的是密码时,可以选择是否显示“显示密码”的按钮以及按钮的图案;
  • 可以显示输入框中当前文本的长度和要求的长度,等。

需要特别注意的是,TextInputLayout作为一个布局控件,不能独立存在,必须嵌套在EditText或TextInputEditText外层。

和其他MD控件一样,使用TextInputLayout之前必须在gradle文件中声明依赖:

  1. compile 'com.android.support:design:25.0.0'

1、TextInputLayout的属性:

  1. app:passwordToggleEnabled:是否显示可以查看密码的Toggle按钮
  2. app:passwordToggleDrawable:查看密码的Toggle按钮的图片
  3. 注:只有当包裹的EditTextTextInputEditTextInputType是密码格式时才会显示这个图标
  4. app:counterEnabled:是否显示文本长度计数器
  5. app:counterMaxLength:文本长度计数器的最大长度
  6. 注:文本长度计数器就是在输入框的右下角显示“X/Y”字样,X表示当前输入框中的文本长度,Y表示规定的输入长度
  7. 如果用户输入的长度超过Y,则文本计数器中的文本会变色提示

2、布局代码示例:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. android:id="@+id/activity_main"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:orientation="vertical">
  7.  
  8. <!-- 使用TextInputLayout包裹EditText -->
  9. <android.support.design.widget.TextInputLayout
  10. android:id="@+id/textinputlayout"
  11. android:layout_width="match_parent"
  12. android:layout_height="wrap_content"
  13. app:counterEnabled="true"
  14. app:counterMaxLength="6"
  15. app:passwordToggleDrawable="@mipmap/ic_launcher"
  16. app:passwordToggleEnabled="true">
  17.  
  18. <!-- 这里的TextInputEditText可以使用EditText代替 -->
  19. <android.support.design.widget.TextInputEditText
  20. android:id="@+id/edittext"
  21. android:layout_width="match_parent"
  22. android:layout_height="wrap_content"
  23. android:inputType="textPassword" />
  24. </android.support.design.widget.TextInputLayout>
  25.  
  26. </LinearLayout>

运行结果如下图:

3、错误提示:

TextInputLayout支持错误提示,即当经过判断,当前输入的文本不符合要求时,就会在输入框下方显示一行提示,提示输入错误。通过调用TextInputLayout对象的setErrorEnabled()、setError()方法可以实现这一功能。具体代码如下:

  1. // 是否可以弹出错误提示语
  2. til.setErrorEnabled(true);
  3. // 获取TextInputLayout中包裹的EditText
  4. EditText et = til.getEditText();
  5. // 当EditText中的文本发生变化时处理TextInputLayout的错误提示语及其显隐
  6. et.addTextChangedListener(new TextWatcher() {
  7. @Override
  8. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  9. }
  10.  
  11. @Override
  12. public void onTextChanged(CharSequence s, int start, int before, int count) {
  13. try {
  14. if ("".equals(s + "")) {
  15. // 设置错误提示语为null,即不显示错误提示语
  16. til.setError(null);
  17. } else if (s.length() > 6) {
  18. // 如果输入长度超过6位,则显示错误提示
  19. til.setError("密码长度超过上限!");
  20. } else {
  21. Integer.parseInt(s + "");
  22. til.setError(null);
  23. }
  24. } catch (Exception e) {
  25. // 设置错误提示语为具体的文本
  26. til.setError("输入内容不是数字!");
  27. }
  28. }
  29.  
  30. @Override
  31. public void afterTextChanged(Editable s) {
  32. }
  33. });

演示结果如图所示:

以上就是对TextInputLayout的基本用法的介绍,下面贴出码云中的源码,供大家参考。

DEMO地址

【Android - MD】之TextInputLayout的使用的更多相关文章

  1. 【Android - MD】之Snackbar的使用

    Snackbar 是 Android 5.0 新特性--Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也 ...

  2. 【Android - MD】之CoordinatorLayout的使用

    CoordinatorLayout是Android 5.0新特性--Material Design中的一个布局控件,主要用来协调各个子视图之间的工作,也可以用来作为顶部布局.CoordinatorLa ...

  3. 【Android - MD】之NavigationView的使用

    NavigationView是Android 5.0新特性--Material Design中的一个布局控件,可以结合DrawerLayout使用,让侧滑菜单变得更加美观(可以添加头部布局). Nav ...

  4. 【Android - MD】之TabLayout的使用

    TabLayout是Android 5.0新特性--Material Design中的一个控件,是一个标签页的导航条,常结合ViewPager完成页面导航. 和其他MD控件一样,使用TabLayout ...

  5. 【Android - MD】之FloatingActionButton的使用

    FloatingActionButton(FAB) 是 Android 5.0 新特性--Material Design 中的一个控件,是一种悬浮的按钮. FloatingActionButton 是 ...

  6. 【Android - MD】之RecyclerView的使用

    RecyclerView是Android 5.0新特性--Material Design中的一个控件,它将ListView.GridView整合到一起,可以使用极少的代码在ListView.GridV ...

  7. 【Android - MD】之CardView的使用

    CardView是Android 5.0新特性--Material Design中的一个布局控件,可以通过属性设置显示一个圆角的类似卡片的视图. 1.CardView的属性: app:cardCorn ...

  8. 【Android - 控件】之MD - TextInputLayout的使用

    TextInputLayout是Android 5.0新特性——Material Design中的一个布局控件,主要用来嵌套EditText,实现数据输入时的一些效果,如: 当输入框获取焦点时,输入提 ...

  9. 如何使用android design support library

    Android应用Design Support Library完全使用实例 - OPEN 开发经验库http://www.open-open.com/lib/view/open143338585611 ...

随机推荐

  1. 关于boost::function与boost::bind函数的使用心得

    最近开始写一个线程池,期间想用一个通用的函数模板来使得各个线程执行不同的任务,找到了Boost库中的function函数. Boost::function是一个函数包装器,也即一个函数模板,可以用来代 ...

  2. [Neural Networks] Dropout阅读笔记

    多伦多大学Hinton组 http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf 一.目的 降低overfitting的风险 二.原理 ...

  3. 子元素增加margin-top会增加给父元素的问题

    假设我们有如下代码 <div id="father" style="height:400px;width:400px;background:#e4393c;&quo ...

  4. Ext.String 方法

    1.Ext.String.htmlEncode(value); 编码字符串,对其中特殊字符进行转义 xt.String.htmlEncode("hello'world"); //& ...

  5. PHP页面静态化入门

    <?php /** *PHP页面静态化分为以下步骤: *1.打开输出控制缓存 *2.返回输出缓存区的内容 *3.将一个字符串写入文件 *4.冲刷出缓存区的内容 */ //1.打开输出控制缓存 o ...

  6. Win7下通过easyBCD引导安装Ubuntu14.04

    Ubuntu14.04作为目前最新版本的ubuntu系统,相信很多人都想在自己的电脑上安装一下,然而系统的安装方法各式各样,u盘法.grub引导法等等,这里我将介绍在win7系统下用easyBCD软件 ...

  7. PYTHON开发--面向对象基础二

    一.成员修饰符 共有成员 私有成员, __字段名 - 无法直接访问,只能间接访问 1.     私有成员 1.1  普通方法种的私有成员 class Foo: def __init__(self, n ...

  8. TicTacToe井字棋 by reinforcement learning

    对于初学强化学习的同学,数学公式也看不太懂, 一定希望有一些简单明了的代码实现加强对入门强化学习的直觉认识,这是一篇初级入门代码, 希望能对你们开始学习强化学习起到基本的作用. 井字棋具体玩法参考百度 ...

  9. Centos6.4配置Fedora EPEL源附配置hop5.in源

    查看系统版本 cat /etc/redhat-release 下载CentOS 版本所对应的EPEL 的版本 wget http://download.fedoraproject.org/pub/ep ...

  10. ibatis错误

    java.lang.IllegalArgumentException: Mapped Statement collection already contains value for com.regin ...