2012-05-18 40 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

相关问题