閱讀328 返回首頁    go 阿裏雲 go 技術社區[雲棲]


自定義程序實現Android EditText隻允許輸入指定字符

程序設計的很多地方都要用到一個小技術:指定文本框的輸入類型。即限製隻能輸入某幾類或某類字符,甚至是某幾個字符。
Android本身已經做了很多設計,如限製長度,限製隻能輸入整數或數字。
有時候這些還是不夠的。我們可以在程序中根據需要自己定製。
主要涉及:EditText.addTextChangedListener,EditText.removeTextChangedListener,EditText.setFilters。

方法:
對EditText添加自定義的TextChange監聽。在改監聽中檢測輸入字符是否合法。

關鍵代碼如下:

   @Override

  public void afterTextChanged(Editable s) {

   String str = s.toString();

   if (str.equals(tmp)) {

    return;// 如果tmp==str則返回,因為這是我們設置的結果。否則會形成死循環。

   }

   StringBuffer sb = new StringBuffer();

   for (int i = 0; i < str.length(); i++) {

    if (digits.indexOf(str.charAt(i)) >= 0) {// 判斷字符是否在可以輸入的字符串中

     sb.append(str.charAt(i));// 如果是,就添加到結果裏,否則跳過

    }

   }

   tmp = sb.toString();// 設置tmp,因為下麵一句還會導致該事件被觸發

   editText.setText(tmp);// 設置結果

   editText.invalidate();

  }


最後更新:2017-04-04 07:03:42

  上一篇:go How to run (git/ssh) authentication agent?
  下一篇:go Oracle中的常用權限視圖