Как установить 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);

Ответы

Ответ 1

TextWatcher также является хорошим вариантом, однако я предпочитаю использовать пользовательские фильтры. таким образом, более простым способом является использование InputFilter и контроль над каждым char на лету, см. пример ниже, надеюсь, что это поможет

    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);

Ответ 2

В вашем XML файле макета Android добавить в EditText следующие атрибуты:

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

Первый атрибут позволяет вводить только эти цифры. Любой другой вход отклоняется и не отображается. Второй атрибут заглавные буквы.

кредит идет в это сообщение в блоге: http://mobile.antonio081014.com/2012/04/how-to-let-input-of-edittext-only-be.html

Ответ 3

Чтобы получить контроль над тем, что пользователь может ввести, добавьте TextWatcher в свои EditTexts.