目录
-
介绍
TextInputLayout 是EditText(或者EditText子类)的一个包装类,让EditText变成Material Design 风格的文本框,当输入时,内嵌标签会浮动到内容的上方,也支持显示错误信息和字符计数等功能。
-
基本代码
<android.support.design.widget.TextInputLayout
app:passwordToggleEnabled="true"
android:id="@+id/uersPasswd_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/uersPasswd_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/uerspasswd_et_hint"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1" />
</android.support.design.widget.TextInputLayout>
-
主要方法和属性
密码可见切换图标(眼睛)
XML==>app:passwordToggleDrawable
JAVA==>setPasswordVisibilityToggleDrawable(boolean);
是否显示密码可见切换图标(眼睛)
JAVA==>setPasswordVisibilityToggleEnabled(boolean)
字符计数器
字符计数器是否可用
XML==>app:counterEnabled
JAVA==>setCounterEnabled(boolean)
计数器最大长度
XMl==>app:counterMaxLength
JAVA==>setCounterMaxLength(int)
计数超过最大长度时显示的文本样式(字体大小、突出颜色)
XML==>app:counterOverflowTextAppearance=="@style/TextOverCount"
style代码:
<style name="TextOverCount" parent="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
<item name="android:textColor">@color/colorErrorMessage</item>
</style>
显示的计数的文本样式
XML==>app:counterTextAppearance
显示错误信息
显示错误信息是否可用(默认启用)
XML==>app:errorEnabled
显示错误信息是否可用
XML==>app:errorTextAppearance
设置错误信息显示文本
EditText uersName_et = (EditText)findViewById(R.id.uersName_et);
uersName_et.setError("请输入用户名");
浮动标签
设置浮动标签文本
XML==>android:hint
JAVA==>setHint(CharSequence)
是否显示浮动标签的动画
XML==>app:hintAnimationEnabled
JAVA==>setHintAnimationEnabled(boolean)
浮动标签文本样式
XML==>app:hintTextAppearance
JAVA==>setHintTextAppearance(int)
是否显示浮动标签
XML==>app:hintEnabled
jAVA==>setHintEnabled(boolean)
-
配合焦点实现自动显示/隐藏错误信息
uersName_et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (uersName_et.hasFocus()==false){
if (uersName_et.getText().toString().length()==0){
uersName_et.setError("");//失去焦点时显示错误提示
}
}else{
uersName_et.setError(null,null);//获得焦点时移除错误提示
}
}
});