`
dowhathowtodo
  • 浏览: 775378 次
文章分类
社区版块
存档分类
最新评论

修改Android源码计算器——输入框最大输入数提示

 
阅读更多

Android源码计算器:当输入到一定数,加减乘除一些数后,容易报错。

2.想在计算器的数字输入框中,加入限制最大输入数并提示。

用如下方法本来可以很轻意地解决此问题,但由于布局运用到了:CalculatorDisplay,其extendsViewSwitcher,在lengthFilter需要用到参数:EditText,即输入框。由于对android源码计算器不熟,一时不知如何获取计算器输入框,后来发现通过CalculatorDisplaygetChildAt1)可以取得。在onCreate调用如下lengthFilter方法,如:lengthFilter(this,(EditText)mDisplay.getChildAt(1),50,getResources().getString(R.string.most_char));可以解决

  1. publicstaticvoidlengthFilter(finalContextcontext,finalEditTexteditText,finalintmax_length,finalStringerr_msg){
  2. InputFilter[]filters=newInputFilter[1];
  3. filters[0]=newInputFilter.LengthFilter(max_length){
  4. @Override
  5. publicCharSequencefilter(CharSequencesource,intstart,intend,
  6. Spanneddest,intdstart,intdend){
  7. //TODOAuto-generatedmethodstub
  8. intdestLen=getCharacterNum(dest.toString());//获取字符个数(一个中文算2个字符)
  9. intsourceLen=getCharacterNum(source.toString());
  10. if(destLen+sourceLen>max_length){
  11. Toast.makeText(context,err_msg,Toast.LENGTH_SHORT).show();
  12. return"";
  13. }
  14. returnsource;
  15. }
  16. };
  17. editText.setFilters(filters);
  18. }
  19. /**
  20. *@description获取一段字符串的字符个数(包含中英文,一个中文算2个字符)
  21. *@paramcontent
  22. *@return
  23. */
  24. publicstaticintgetCharacterNum(finalStringcontent){
  25. if(null==content||"".equals(content)){
  26. return0;
  27. }else{
  28. return(content.length()+getChineseNum(content));
  29. }
  30. }
  31. /**
  32. *@description返回字符串里中文字或者全角字符的个数
  33. *@params
  34. *@return
  35. */
  36. publicstaticintgetChineseNum(Strings){
  37. intnum=0;
  38. char[]myChar=s.toCharArray();
  39. for(inti=0;i<myChar.length;i++){
  40. if((char)(byte)myChar[i]!=myChar[i]){
  41. num++;
  42. }
  43. }
  44. returnnum;
  45. }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics