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

来源:互联网 发布:c汉诺塔循环算法 编辑:程序博客网 时间:2024/05/08 23:41

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);  }  }






0 0