etContent.addTextChangedListener(etContentTextWatcher);
private TextWatcher etContentTextWatcher = 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) {
//TextView显示剩余字数
tvMaxLength.setText(((s.length() < MAX_NUM) ? s.length() : MAX_NUM) + "/" + MAX_NUM);
int selectionStart = etContent.getSelectionStart();
int selectionEnd = s.length();
// 先去掉监听器,否则会出现栈溢出
etContent.removeTextChangedListener(etContentTextWatcher);
while (!TextUtils.isEmpty(etContent.getText()) && s.length() > MAX_NUM) {
//删除多余输入的字(不会显示出来)
if (selectionStart >= MAX_NUM) {
s.delete(selectionStart - (selectionStart - MAX_NUM), selectionEnd);
selectionStart = selectionStart - (selectionStart - MAX_NUM);
} else {
s.delete(selectionStart + (MAX_NUM - selectionStart), selectionEnd);
selectionStart = selectionStart + (MAX_NUM - selectionStart);
}
etContent.setText(s);
etContent.setSelection(selectionStart);//设置光标在最后
}
etContent.addTextChangedListener(etContentTextWatcher);
}
};
一个行之有效的控制EditText文本长度的方案
最新推荐文章于 2022-11-23 14:42:26 发布