Android 监听EditText控件文本变化并修改显示内容
来源:互联网 发布:suse 查看端口 编辑:程序博客网 时间:2024/05/22 17:13
在软件设计中我们会遇到这样的请求,比如用户购物时可以在文本框EditText内只能输入整数,而且大小不能超过对应商品的剩余数额num。前者好办,设置EditText的inputType就可以了,后者就需要监听EditText的文本变化。
在网上浏览了一圈,看到的监听器都只能监听文本的变化,而不能修改EditText的文本显示,还是自己动手解决吧。
EditText viewById = (EditText)findViewById(R.id.edit); viewById.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { String originText = editable.toString(); String myText="konijiwa"; CharSequence charSequence = myText.subSequence(0, myText.length()); if(i==0) { i++; editable.replace(0, originText.length(), charSequence); } } });
通过分析editable.replace(int st, int en, CharSequence text)方法,参数st代表待替换的EditText的文本的初始位置,en代表结束位置,英文过关的同道可以自行查看源代码注释。上述代码中使用(i==0)作为是否执行替换文本操作的判定条件。值得提醒的是,执行editable.replace(0, originText.length(), charSequence)方法之后,会立即再次触发TextWatcher文本监听器中的方法,因为文本在代码中再次修改了。也就是代码如下,
if(i==0) { editable.replace(0, originText.length(), charSequence); i++; }
那么i++将永远无法执行,程序会陷入死循环。所以我们应该把触发替换文本操作的标志(i的值)的修改,放在替换操作执行之前完成。
阅读全文
1 0
- Android 监听EditText控件文本变化并修改显示内容
- Android应用开发EditText文本内容变化监听方法
- Android应用开发EditText文本内容变化监听方法
- Android应用开发EditText文本内容变化监听方法
- Android应用开发EditText文本内容变化监听方法
- Android-监听EditText内容变化
- Android: EditText监听内容变化
- Android中动态监听EditText控件内容变化
- 监听EditText内容变化
- EditText 监听内容变化
- Android---监听EditText变化
- android EditText 字数监听并显示
- android EditText 字数监听并显示
- Android EditText得到和失去焦点、内容变化的监听
- 使用TextWatcher监听EditText的文本变化之后动态改变EditText里面的内容
- android EditTex 控件文本内容改变监听
- android 监听EditText 的变化
- android EditText 监听焦点变化
- cmd打开mysql的正确方式
- 欢迎使用CSDN-markdown编辑器
- js中apply与call的区别
- SQL调优与SQL优化(SQL Tuning or SQL Optimization)
- linux命令缩写
- Android 监听EditText控件文本变化并修改显示内容
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderExce
- 页面关键词密度 和布局 ,内页
- Spring源码阅读(六)—AOP获取增强
- hbase远程api调用, 远程连接开发,环境构建相关问题总结
- 【九度OJ】1196:成绩排序
- hdu 6150 思维构造
- 开源MANO
- 周志华《机器学习》笔记:2、模型评估与选择