歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 修改Android源碼計算器——輸入框最大輸入數提示

修改Android源碼計算器——輸入框最大輸入數提示

日期:2017/3/1 10:25:14   编辑:Linux編程

1. Android源碼計算器:當輸入到一定數,加減乘除一些數後,容易報錯。

2. 想在計算器的數字輸入框中,加入限制最大輸入數並提示。

用如下方法本來可以很輕意地解決此問題 ,但由於布局運用到了:CalculatorDisplay,其extends了ViewSwitcher,在lengthFilter 需要用到參數:EditText,即輸入框。由於對android源碼計算器不熟,一時不知如何獲取計算器輸入框,後來發現通過CalculatorDisplay的getChildAt(1)可以取得。在onCreate調用如下lengthFilter方法,如:lengthFilter(this,(EditText)mDisplay.getChildAt(1),50,getResources().getString(R.string.most_char)); 可以解決

  1. public static void lengthFilter(final Context context, final EditText editText, final int max_length, final String err_msg) {
  2. InputFilter[] filters = new InputFilter[1];
  3. filters[0] = new InputFilter.LengthFilter(max_length) {
  4. @Override
  5. public CharSequence filter(CharSequence source, int start, int end,
  6. Spanned dest, int dstart, int dend) {
  7. // TODO Auto-generated method stub
  8. int destLen = getCharacterNum(dest.toString()); //獲取字符個數(一個中文算2個字符)
  9. int sourceLen = getCharacterNum(source.toString());
  10. if (destLen + sourceLen > max_length) {
  11. Toast.makeText(context, err_msg,Toast.LENGTH_SHORT).show();
  12. return "";
  13. }
  14. return source;
  15. }
  16. };
  17. editText.setFilters(filters);
  18. }
  19. /**
  20. * @description 獲取一段字符串的字符個數(包含中英文,一個中文算2個字符)
  21. * @param content
  22. * @return
  23. */
  24. public static int getCharacterNum(final String content) {
  25. if (null == content || "".equals(content)) {
  26. return 0;
  27. }else {
  28. return (content.length() + getChineseNum(content));
  29. }
  30. }
  31. /**
  32. * @description 返回字符串裡中文字或者全角字符的個數
  33. * @param s
  34. * @return
  35. */
  36. public static int getChineseNum(String s) {
  37. int num = 0;
  38. char[] myChar = s.toCharArray();
  39. for (int i = 0; i < myChar.length; i++) {
  40. if ((char)(byte)myChar[i] != myChar[i]) {
  41. num++;
  42. }
  43. }
  44. return num;
  45. }

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved