Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。们展示了如下功能:

1.init上弹显示

2.错误提示

3.字数统计(貌似最近更新的)

接下来,一一演示如下功能。

首先引入如下兼容库

compile ‘com.android.support:design:23.2.0’
compile ‘com.android.support:cardview-v7:23.2.0’

1.init上弹显示

只需要在布局文件中如下声明即可,TextInputLayout的底色和EditText的下划线颜色都是由主题的 <item name=”colorAccent”>@color/colorAccent</item>指定的。

<android.support.design.widget.TextInputLayout
    android:id="@+id/inputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:digits="1234567890qwertyuiopasdfghjklzxcvbnm "
        android:hint="please input your text" />


2.错误提示

主要就是监听EditText对editText输入的内容进行正则验证(实现方法很多),如果正则不匹配或者验证不通过就使用

mTextInputLayout.setErrorEnabled(true);
mTextInputLayout.setError(“请检查格式”);

如,对用户的邮箱进行验证,可以对editText设置文字改变的监听

 private static final String EMAIL_PATTERN = "^\\s*\\w+(?:\\.{0,1}[\\w-  ]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$";
 private Pattern pattern = Pattern.compile(EMAIL_PATTERN);
 private Matcher matcher;

mEditText.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) {
            matcher = pattern.matcher(s);
            Boolean flag = matcher.matches();
            if (flag) {
                mInputLayout.setErrorEnabled(false);
                mInputLayout.setError("");
            } else {
                mInputLayout.setErrorEnabled(true);
                mInputLayout.setError("邮箱格式有误");

            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}

当然你也可以在点击Button后进行验证。

3.字数统计

是InputLayout新推出的属性,只需要在TextInputLayout中配置

app:counterEnabled=”true”属性即可进行字数统计功能。

<android.support.design.widget.TextInputLayout
    app:counterEnabled="true"
    android:id="@+id/inputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp">

当然,你也可以指定最大输入的字符数,使用app:counterMaxLength=”15″属性

注意:在使用此属性时必须为TextInputLayout指定如下属性app:counterOverflowTextAppearance=”@style/MyOverflowText”

来改变文字超出时,提示文字的显示效果,否则程序将直接抛出异常,请注意,这是一个很大的坑,如果没有该属性的声明程序一定会报异常

stackoverflow类似问题描述。

主题配置如下:

<style name="MyOverflowText" parent="TextAppearance.AppCompat.Small">
    <item name="android:textColor">@color/red</item>
</style>

效果如下所示:

使用这个新特性可以大大减少开发者的代码量,使开发者不需要再对EditText的输入做任何监听,不需要实现该部分的逻辑,因为系统已经为我们实现了,为什么不直接用呢?

关于inputLayout的用法先介绍这么多,如果有什么写得不对的地方欢迎大家指正。