您的位置:首页 > 移动开发 > Android开发

android 中如何限制 EditText 最大输入字符数

2016-05-18 16:18 483 查看

android 中如何限制 EditText 最大输入字符数

1、在 xml 文件中设置文本编辑框属性作字符数限制

如:android:maxLength="10" 即限制最大输入字符个数为10

但是这种方法有的时候并不适用,比如你在代码中为空间又添加了一个InputFilter,这个filter的作用可能是对你输入的字符进行一些格式上的限制,那么这个filter就会使你在布局文件中定义的maxLength失效。这个时候就需要在代码中设置EditText的最大输入字符数。

2、在代码中使用InputFilter 进行过滤

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)}); 即限定最大输入字符数为10

3、利用 TextWatcher 进行监听

editText.addTextChangedListener(new MaxLengthWatcher(10, editText));

public class MaxLengthWatcher implements TextWatcher {

private int maxLen = 0;
private EditText editText = null;
private TextView textView = null;

public MaxLengthWatcher(int maxLen, EditText editText, TextView textView) {
this.maxLen = maxLen;
this.editText = editText;
this.textView = textView;
}

public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub

}

public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub

}

public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
Editable editable = editText.getText();
int len = editable.length();

if(len > maxLen)
{
int selEndIndex = Selection.getSelectionEnd(editable);
String str = editable.toString();
//截取新字符串
String newStr = str.substring(0,maxLen);
editText.setText(newStr);
editable = editText.getText();

//新字符串的长度
int newLen = editable.length();
//旧光标位置超过字符串长度
if(selEndIndex > newLen)
{
selEndIndex = editable.length();
}
//设置新光标所在的位置
Selection.setSelection(editable, selEndIndex);
}
textView.setText(len + "/" + maxLen);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: