平时在做android开发过程中经常要用到EditText,有时候可能需要监听你在TextView中输入的字数的状态和变化,以便于我们能做相应的提示和操作。我们可以通过下面的方式来实现。

[java] view plain copy
  1. classEditChangedListenerimplementsTextWatcher{
  2. privateCharSequencetemp;//监听前的文本
  3. privateinteditStart;//光标开始位置
  4. privateinteditEnd;//光标结束位置
  5. privatefinalintcharMaxNum=10;
  6. @Override
  7. publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){
  8. if(DEBUG)
  9. Log.i(TAG,"输入文本之前的状态");
  10. temp=s;
  11. }
  12. @Override
  13. publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
  14. if(DEBUG)
  15. Log.i(TAG,"输入文字中的状态,count是一次性输入字符数");
  16. mTvAvailableCharNum.setText("还能输入"+(charMaxNum-s.length())+"字符");
  17. }
  18. @Override
  19. publicvoidafterTextChanged(Editables){
  20. if(DEBUG)
  21. Log.i(TAG,"输入文字后的状态");
  22. /**得到光标开始和结束位置,超过最大数后记录刚超出的数字索引进行控制*/
  23. editStart=mEditTextMsg.getSelectionStart();
  24. editEnd=mEditTextMsg.getSelectionEnd();
  25. if(temp.length()>charMaxNum){
  26. Toast.makeText(getApplicationContext(),"你输入的字数已经超过了限制!",Toast.LENGTH_LONG).show();
  27. s.delete(editStart-1,editEnd);
  28. inttempSelection=editStart;
  29. mEditTextMsg.setText(s);
  30. mEditTextMsg.setSelection(tempSelection);
  31. }
  32. }
  33. };

加上监听的事件。

[java] view plain copy
  1. mEditTextMsg.addTextChangedListener(newEditChangedListener());

效果图:

更多相关文章

  1. Android(安卓)之SearchView翻译
  2. Android输入事件InputReader和InputDispatcher分析
  3. Android(安卓)通话处理流程【转】
  4. Android(安卓)5.0输入系统分析之InputReader线程分析
  5. Android默认输入法语言的修改以及SettingsProvider作用
  6. 如何在Android模拟器上安装apk文件
  7. 在Eclipse中安装ADT
  8. android滑动事件监听
  9. Android(安卓)项目如何获取MD5和SHA1

随机推荐

  1. Android源码下载和编译
  2. 5个顶级的Android开发库
  3. Flutter 开发突然遇到的坑:Error retrievi
  4. error while loading shared libraries:
  5. android毫秒转化为时间
  6. Android Toast句柄泄露问题
  7. 下载文件
  8. android开关按钮
  9. Android自定义Dialog网络加载等待弹窗
  10. 第一章:初入Android大门(不同的Activity