TextInputLayout的使用
这篇博客是学习完 Android 6.0 的新控件 TextInputLayout 后所写。如有不妥之处,欢迎留言,谢谢~
接下来这几篇博客,我将学习 Android 5.0 以及 6.0 的一些新控件。每个新控件一篇博客,能拓展的,我也会学习如何扩展。学习完后,我将综合到一个案例中。
TextInputLayout 是 Android 6.0 时推出的新控件,是 Android Support Design Library 库中的一个控件。
效果图
什么也别说,没看到效果图,没有看下去的欲望。那行,先来看效果图:
Android API 中的简述
从上图可知:
- TextInputLayout 是继承 LinearLayout ;
- 当被 TextInputLayout 包裹的 EditText 有 hint 提示,输入框中无内容 ,且获得焦点时,hint 将会浮到输入框的上面;
- 其是与
EditText
或EditText的子类
进行搭配使用的,也就是说单独使用 TextInputLayout 是没有任何意义的; - 同样的,TextInputLayout 也支持错误提示。
使用步骤
导入兼容库
1compile 'com.android.support:design:23.3.0'布局文件
12345678910111213141516171819<android.support.design.widget.TextInputLayoutandroid:id="@+id/til_username"android:layout_width="match_parent"android:layout_height="wrap_content"><EditTextandroid:id="@+id/et_username"android:layout_width="match_parent"android:layout_height="wrap_content"/></android.support.design.widget.TextInputLayout><android.support.design.widget.TextInputLayoutandroid:id="@+id/til_password"android:layout_width="match_parent"android:layout_height="wrap_content"><android.support.design.widget.TextInputEditTextandroid:id="@+id/tiet_password"android:layout_width="match_parent"android:layout_height="wrap_content"/></android.support.design.widget.TextInputLayout>不知道你有没有注意到,我这里使用的两个输入框是不一样的。一个是我们常见的
EditText
,另一个是 MD 中的输入框TextInputEditText
。 TextInputLayout 中的源码中,是这样解释的:Java 代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950private void initData() {// 设置TextInputLayout提示信息mTilUsername.setHint("用户名");mEtUsername.addTextChangedListener(new TextWatcher() {public void beforeTextChanged(CharSequence s, int start, int count, int after) {}public void onTextChanged(CharSequence s, int start, int before, int count) {if (s.length() > 6) {// 设置TextInputLayout显示错误提示mTilUsername.setErrorEnabled(true);// 设置TextInputLayout错误提示消息mTilUsername.setError("用户名不能超过6位!");} else {// 设置TextInputLayout隐藏错误提示mTilUsername.setErrorEnabled(false);}}public void afterTextChanged(Editable s) {}});// 设置TextInputLayout提示信息mTilPassword.setHint("密码");mTietPassword.addTextChangedListener(new TextWatcher() {public void beforeTextChanged(CharSequence s, int start, int count, int after) {}public void onTextChanged(CharSequence s, int start, int before, int count) {if (s.length() > 6) {// 设置TextInputEditText的错误提示消息mTietPassword.setError("密码不能超过6位!");}}public void afterTextChanged(Editable s) {}});}
这样,TextInputLayout 的使用就算完成了。但是,还有一些属性需要说下。在上面的例子中,我采用的是 Java 代码进行设置的方式进行的,也可以使用在 XML 文件进行相应的设置。
在 XML 中常用的属性有:
|
|
在 Java 代码中常用的属性有:
|
|
错误消息提示的区别
上面说到了 TextInputLayout 也支持错误消息提示,那么其与EditText、TextInputEditText 的有什么区别呢?下图就是答案。两者的错误消息提示在呈现方式上是不同的。
项目地址
TextInputLayout 的使用教程到此结束了。
作者简介:
刘广明(@cnLGMing),一步一步往上爬。
文章若有不对之处,欢迎指正,谢谢~
版权声明:原创作品,转载时请务必注明原始出处。