Android 监听EditText控件文本变化并修改显示内容
2017-09-01 12:44
1666 查看
在软件设计中我们会遇到这样的请求,比如用户购物时可以在文本框EditText内只能输入整数,而且大小不能超过对应商品的剩余数额num。前者好办,设置EditText的inputType就可以了,后者就需要监听EditText的文本变化。
在网上浏览了一圈,看到的监听器都只能监听文本的变化,而不能修改EditText的文本显示,还是自己动手解决吧。
通过分析editable.replace(int st, int en, CharSequence text)方法,参数st代表待替换的EditText的文本的初始位置,en代表结束位置,英文过关的同道可以自行查看源代码注释。上述代码中使用(i==0)作为是否执行替换文本操作的判定条件。值得提醒的是,执行editable.replace(0, originText.length(), charSequence)方法之后,会立即再次触发TextWatcher文本监听器中的方法,因为文本在代码中再次修改了。也就是代码如下,
那么i++将永远无法执行,程序会陷入死循环。所以我们应该把触发替换文本操作的标志(i的值)的修改,放在替换操作执行之前完成。
在网上浏览了一圈,看到的监听器都只能监听文本的变化,而不能修改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的值)的修改,放在替换操作执行之前完成。
相关文章推荐
- Android应用开发EditText文本内容变化监听方法
- Android应用开发EditText文本内容变化监听方法
- Android中动态监听EditText控件内容变化
- Android应用开发EditText文本内容变化监听方法
- android控件edittext-addTextChangedListener监听文本的变化
- Android应用开发EditText文本内容变化监听方法
- Android应用开发EditText文本内容变化监听方法
- Android监听EditText内容变化
- android 中动态监听Edittext控件内容长度 TextWatcher监听事件
- Android—Android中监听EditText文本输入,实现修改用户名,清除密码
- Android EditText控件即设置最小高度又运行高度随内容增加而变化
- Android开发每次都需要按一个退格键或者回车才能显示出我edittext控件里面的内容
- Android: EditText监听内容变化
- Android 重写EditText,失去焦点超出控件宽度部分三个点表示,获得焦点显示原来内容
- Android EditText得到和失去焦点、内容变化的监听
- Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》
- Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》
- Android 系列 6.16使用TextView和EditText显示文本字段
- 【Android进阶学习】监听EditText的变化
- 【Android进阶学习】监听EditText的变化