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();
}
};
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();
}
};
相关文章推荐
- android视频缓冲进度条SeekBar有断断续续的间断效果
- Android中ListView.getCount()与ListView.getChildCount()区别和OnScrollListener()各个参数的区别
- android sharePreference的使用
- Android四大组建之Service
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- android性能优化--overdraw优化
- Android 查看內存使用
- Android如何防止apk程序被反编译
- 如何给你的Android 安装文件(APK)瘦身
- 使用 Android NDK 重用现有的 C 代码
- Android 动态布局实现多主题切换
- 使用 Android NDK 重用现有的 C 代码
- Android x86模拟器Intel Atom x86 System Image配置与使用方法
- Android小知识点、小疑问之 ListView中的灵异事件ListView跟Button 不能同时点击
- [轉]Android的内存泄漏和调试
- Android之Activity的启动方式
- Android 官方推荐 : DialogFragment 创建对话框
- android studio 获取SHA1值
- Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
- Android系统SVC命令教程