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


Android TextView的字符過濾功能

 TextView可以設置接受各式各樣的字符,通過過濾指定的字符來滿足不同應用的輸入和顯示要求。

 

通過xml配置:

android:InputType

number                               接受整數輸入

numberSigned                  接受有符號整數輸入

numberDecimal                接受整數和小數的輸入

 

android:digits

指定接受固定的數字,如android:digits="012345",則隻接受0~5數字的輸入

 

android:numberic

integer                                 接受整數輸入

signed                                 接受有符號整數輸入

decimal                               接受整數和小數輸入

 

 

通過java代碼設置

其實以上3個屬性,功能有點重複,最終都是通過java代碼來對TextView設置KeyListener

KeyListener是一個接口,提供了對輸入鍵盤按鍵的監聽

InputFilter是一個接口,提供了對字符的過濾

android提供了實現了KeyListener和InputFilter的NumberKeyListener,而DigitsKeyListener繼承了NumberKeyListener

 

[c-sharp] view plaincopy
  1. TextView tv = new TextView(context);  
  2. //隻接受整數輸入  
  3. KeyListener l = new DigitsKeyListener(fasle,false);  
  4. //接受有符號整數輸入  
  5. KeyListener l = new DigitsKeyListener(true,false);  
  6. //接受小數,整數輸入  
  7. KeyListener l = new DigitsKeyListener(false,true);  
  8. //接受有符號整數/小數輸入  
  9. KeyListener l = new DigitsKeyListener(true,true);  
  10. tv.setKeyListener(l);  
 

 

如果想要實現更大自由度的過濾定製,可以自己寫一個KeyListener(繼承BaseKeyListener)並實現InputFilter,重寫filter()函數,在filter()函數裏可以實現自由的過濾。


在Android中,讓你的EditText隻接受你指定的字符,可以用以下辦法實現:
    NumberKeyListener myKeyListener =
         new NumberKeyListener() {
            public int getInputType() {
                //指定鍵盤類型
                 return InputType.TYPE_CLASS_TEXT;
             }
         
             protected char[] getAcceptedChars() {
                //指定你所接受的字符
                return "abcdefg".toCharArray();
             }
         };
         
        EditText tv = (EditText)findViewById(R.id.testEdit);
        tv.setKeyListener(myKeyListener);
        
你可以將字符串"abcdefg"換成任意的,你想讓你的EditText所接受的字符組合。

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

  上一篇:go iOS6.1 beta 固件下載
  下一篇:go How to run (git/ssh) authentication agent?