今天在使用某个软件的时候,发现创建的密码的时候,总是在你输入之后才告诉你是输入的格式不对,真的很烦恼,难道就没有在输入的过程就顺便验证了输入的格式以及告诉客户输入的正确格式的么?
本着学海无涯的精神以及强迫症的发作,在网上看到了这个比较好用的控件,就分享出来:
TextInputLayout在android sutdio 10版本中使用的话,在布局直接就可以使用,而且里面包含了一个子View:TextInputEditText,下面说下他们俩的主要属性
1、TextInputLayout:
①app:counterEnabled="true"与app:counterMaxLength="10",他们俩是配合使用的,counterEnabled是设置显示字符数的,而counterMaxLength是设置最大的字符数
image.png
如图所示,20为我输入的字符数,而10为我设置的最大字符数
②app:counterOverflowTextAppearance="@style/hintcolor"也是配合上面的一起使用,这个是控制超出字符数之后提示文字的颜色
//在color.xml文件修改
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="colorRed">#C1162A</color>
</resources>
//在style .xml文件修改
<style name="hintcolor">
<item name="android:textColor">@color/colorRed</item>
</style>
③app:passwordToggleEnabled="true"设置密码的可见性,这个是需要在TextInputEditText中设置android:inputType="textPassword"属性,要不然,会出现
image.png
与预期效果相反的结果
还有,今天主要目的是为了让客户在输入的过程显示提示错误的功能,下面的代码就可以实现了
private void check(){
//对textInputEditText添加监听事件
textInputEditText.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) {
if (textInputEditText.getText().toString().length()>10||textInputEditText.getText().toString().length()<6){
textInputLayout.setError("密码长度为6-10位");
}else {
textInputLayout.setError("");
}
}
});
}
好啦,今天分享到这里,下次再见吧
网友评论