修改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. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值