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

Android (简介) TextWatcher监控EditText 升级方案

2015-09-02 12:01 555 查看
原方案:http://blog.csdn.net/heng615975867/article/details/8730539

mInputEditText.setText(mLastContent);
mInputEditText.setSelection(mInputEditText.length());

//注册edittext的textwatcher事件
mInputEditText.addTextChangedListener(mTextWatcher);

private TextWatcher mTextWatcher = new TextWatcher() {
private int editStart;

private int editEnd;
@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) {
editStart = mInputEditText.getSelectionStart();
editEnd = mInputEditText.getSelectionEnd();

//先去掉监听器,否则会出现栈溢出
mInputEditText.removeTextChangedListener(mTextWatcher);

// 注意这里只能每次都对整个EditText的内容求长度,不能对删除的单个字符求长度
// 因为是中英文混合,单个字符而言,calculateLength函数都会返回1
while (calculateLength(s.toString()) > MAX_COUNT) { // 当输入字符个数超过限制的大小时,进行截断操作
s.delete(editStart - 1, editEnd);
editStart--;
editEnd--;
}
// mEditText.setText(s);将这行代码注释掉就不会出现后面所说的输入法在数字界面自动跳转回主界面的问题了,多谢@ainiyidiandian的提醒
mInputEditText.setSelection(editStart);
// 恢复监听器
mInputEditText.addTextChangedListener(mTextWatcher);
setLeftCount();
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: