Создание поля EditText допускает только буквы и пробелы в Android

У меня есть поле EditText в моем проекте, которое обозначает полное имя человека. Поэтому я хочу, чтобы в нем были разрешены только буквы и пробелы. Поэтому я попробовал следующее в файле XML

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "

Но это не сработало. Может кто-нибудь сказать мне, как это сделать?

Ответ 1

Попробуйте следующее:

EditText yourEditText = (EditText) findViewById(R.id.yourEditText);
yourEditText.setFilters(new InputFilter[] {
    new InputFilter() {
        @Override
        public CharSequence filter(CharSequence cs, int start,
                    int end, Spanned spanned, int dStart, int dEnd) {
            // TODO Auto-generated method stub
            if(cs.equals("")){ // for backspace
                 return cs;
            }
            if(cs.toString().matches("[a-zA-Z ]+")){
                 return cs;
            }
            return "";
        }
    }
});

Ответ 2

Ниже меня изменили: -

android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Поместите пространство между строками. Если вы поместите пробел в конец строки, он автоматически обрезается.

Я использовал пробел после окончания небольших букв и начинал с заглавных букв.

Ответ 3

Добавьте эту строку в свой тег EditText.

Android: цифры = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

Тег EditText должен выглядеть так:

<EditText
        android:id="@+id/edt"
        android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

он работает отлично и не требуется условие проверки


update 1

регулярное выражение src.toString().matches("[a-zA-Z ]+")


обновление 2

Достаточно справедливо, если в этом случае просто добавьте пробел между ними.

android: цифры = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Ответ 4

Попробуйте это

android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Поместите пространство между строками. Если вы поместите пробел в конец строки, он будет автоматически отключен.

Я использовал пробел после окончания небольших букв и начала заглавных букв

Ответ 5

По какой-то причине включение "\n" не может происходить в конце строки, я искал документацию Google, но ничего не нашел. единственный способ добиться пробелов и разрыва строки - это в середине строки. См. Пример, который я использовал в одном из моих приложений.

android:digits="aãâáàbcçdeéfghiíjklmnoõôóòpqrstuvwxyzAÃÂÁÀBCÇDEÉFGHIÍJKLMNOÕÔÓÒ[email protected]_'+=(){}[]*%$#!?,.;\n: /?\\"

Ответ 6

Поместите пробел между строками ниже, это рабочий код.

 android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ "

Ответ 7

использовать regex.. шаблон должен быть

Full_Name_Pattern = "[A-Z][a-z]+( [A-Z][a-z]+)*";

Ответ 8

В вашем layout.xml используйте следующее.

<EditText android:inputType="textPersonName" />

Ответ 9

это сработало для меня (пробелы посередине, а не в конце) android: цифры = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"