Android: Как установить допустимые цифры и символы в EditText?

Я должен установить приемлемые символы "0123456789" и "точка с запятой"; в EditText. Ниже приведен код, который я использую.

<code>android:digits="0123456789;"
android:inputType="number|text
</code>

Проблема с этой реализацией заключается в телефонах HTC, точка с запятой не может быть введена, но в Samsung и Sony Ericsson точка с запятой может быть введена. Другая проблема заключается в том, что при вводе точки с запятой в Samsung и Sony Ericsson точка с запятой не может быть удалена. Есть ли пропущенное свойство в приведенном выше коде? Заранее спасибо.

 Atul Goyal08 нояб. 2012 г., 08:13
This выглядит хороший способ сделать это

Ответы на вопрос(4)

что пользователь может вводить при вводе текста, используйте TextWatcher, обсуждаемый в этом вопросе.Android: Как я могу проверить ввод EditText?

Еще лучше:Разрешить только выбранные символы на основе регулярных выражений в EditText

http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputMethod

Установите InputMethod EditText, чтобы вы могли правильно получить то, что вам нужно.

Решение Вопроса

изменив макет xml и добавив android: inputType = & quot; text & quot ;. Это позволяет легко создавать некоторые базовые проверки, такие как числа, десятичные числа, телефон или электронные письма. Но здесь нет параметров для буквенно-цифровых символов (то есть никаких специальных символов). Для этого вам нужно использовать входной фильтр, как показано ниже, и установить поля, которые вы хотите проверить с помощью этого фильтра в коде. Этот входной фильтр

 InputFilter alphaNumericFilter = new InputFilter() {   
     @Override  
     public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)  
     {  
         for (int k = arg1; k < arg2; k++) {   
             if (!Character.isLetterOrDigit(arg0.charAt(k))) {   
             return ""; 
             }   //the first editor deleted this bracket when it is definitely necessary...
         }
         return null;
     }  
 };   
 mFirstName.setFilters(new InputFilter[]{ alphaNumericFilter});   
 24 нояб. 2016 г., 17:05
Почему это удаляет символы, нажимая пробел в некоторых устройствах?
 22 июн. 2017 г., 09:01
Чтобы избежать удаления символов, я изменил свой тип ввода текста редактирования какtextVisiblePassword.
 08 окт. 2014 г., 09:26
Это удаляет мои символы на нажатие пробела

Pattern mPattern = Pattern.compile("^([1-9][0-9]{0,2})?(\\.[0-9]?)?$");
Matcher matcher = mPattern.matcher(loginNameString.toString());               
if(!matcher.find())
{
    //TODO
}

Ваш ответ на вопрос