2012-05-18 70 views
14

我會把這個代碼放在EditText上,以便它只接受十六進制數字。 我該如何去做這件事?如何將EditText設置爲只有十六進制數字的輸入?

bin = (EditText)findViewById(R.id.editText02); 
hex = (EditText)findViewById(R.id.editText3); 
dec = (EditText)findViewById(R.id.editText1); 
oct = (EditText)findViewById(R.id.editText04); 
+0

用戶setInputType()屬性的EditText .. –

回答

3

TextWatcher也是不錯的選擇,但我更喜歡使用自定義過濾器。 因此,簡單的方法是使用輸入過濾器,並採取對飛每一個字符的控制,看下面的例子,希望這有助於

import android.text.InputFilter; 
    import android.text.InputType; 

    EditText input_moodMsg; 
    // initialize this edittext etc etc 
    //.... 
    // here comes the filter to control input on that component 
    InputFilter inputFilter_moodMsg = new InputFilter() { 
       @Override 
       public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) { 

        if (source.length()>44) return "";// max 44chars 

// Here you can add more controls, e.g. allow only hex chars etc 

        for (int i = start; i < end; i++) { 
         if (!Character.isLetterOrDigit(source.charAt(i)) && !Character.isSpaceChar(source.charAt(i)) 
           && source.charAt(i)!='-' 
           && source.charAt(i)!='.' 
           && source.charAt(i)!='!' 
           ) { 
          return "";  
         }  
        } 
        return null; 
       } 
      }; 
      input_moodMsg.setFilters(new InputFilter[] { inputFilter_moodMsg }); 
      input_moodMsg.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 
36

在你的Android佈局XML文件中添加下列屬性的EditText:

<EditText 
android:digits="ABCDEF" 
android:inputType="textCapCharacters" 
/> 

第一個屬性只允許輸入這些數字。任何其他輸入被拒絕並且不顯示。第二個屬性使字符大寫。

歸功於這個博客帖子: http://mobile.antonio081014.com/2012/04/how-to-let-input-of-edittext-only-be.html

+0

添加機器人:最大長度= 「2」,如果我寫 「TT11」,那麼EditText上保持空白,而不是保持「11」。 – jsanmarb

相關問題