美文网首页
MaxLengthWatcher 监听最大长度,然后设置光标在末

MaxLengthWatcher 监听最大长度,然后设置光标在末

作者: 勤劳的蚂蚁 | 来源:发表于2020-03-11 13:28 被阅读0次
/*
* 监听输入内容是否超出最大长度,并设置光标位置
* */
public class MaxLengthWatcher implements TextWatcher {

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


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

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

       }
   }

}



相关文章

网友评论

      本文标题:MaxLengthWatcher 监听最大长度,然后设置光标在末

      本文链接:https://www.haomeiwen.com/subject/dytcjhtx.html