import android.text.Editable;
import android.text.Selection;
import android.text.TextWatcher;
import android.widget.EditText;
public class MaxLengthTextWatcher implements TextWatcher {
private int maxLen = 0;
private EditText editText = null;
public MaxLengthTextWatcher(int maxLen, EditText editText) {
this.maxLen = maxLen;
this.editText = editText;
}
public void afterTextChanged(Editable arg0) {
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
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);
ToastUtil.show("最多输入"+maxLen+"个字符");
}
}
}
使用方式:
// mBinding.erComment-----输入框控件
// 200 ------ 字数限制
mBinding.etComment.addTextChangedListener(new MaxLengthTextWatcher(200, mBinding.etComment));