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

android layout android-edittext

84055 просмотра

10 ответа

Как я могу ввести только алфавиты в EditText в Android?

Автор: UMAR Источник Размещён: 12.11.2019 09:11

Ответы (10)


157 плюса

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

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

Ваш тег EditText должен выглядеть следующим образом:

<EditText
        android:id="@+id/editText1"
        android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
Автор: Sandeep Размещён: 01.01.2014 12:30

56 плюса

edittext.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
                int end, Spanned dst, int dstart, int dend) {
            if(src.equals("")){ // for backspace
                return src;
            }
            if(src.toString().matches("[a-zA-Z ]+")){
                return src;
            }
            return edittext.getText().toString();
        }
    }
});

пожалуйста, проверьте все тщательно!

Автор: Subhas Размещён: 27.01.2012 08:40

21 плюса

Решение
EditText state = (EditText) findViewById(R.id.txtState);


                Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
                Matcher ms = ps.matcher(state.getText().toString());
                boolean bs = ms.matches();
                if (bs == false) {
                    if (ErrorMessage.contains("invalid"))
                        ErrorMessage = ErrorMessage + "state,";
                    else
                        ErrorMessage = ErrorMessage + "invalid state,";

                }
Автор: UMAR Размещён: 22.03.2010 11:54

21 плюса

Для тех, кто хочет, чтобы их editText принимал только алфавиты и пробел (ни цифры, ни специальные символы), тогда можно использовать это InputFilter. Здесь я создал метод с именем getEditTextFilter()и написал InputFilter внутри него.

public static InputFilter getEditTextFilter() {
        return new InputFilter() {

            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

                boolean keepOriginal = true;
                StringBuilder sb = new StringBuilder(end - start);
                for (int i = start; i < end; i++) {
                    char c = source.charAt(i);
                    if (isCharAllowed(c)) // put your condition here
                        sb.append(c);
                    else
                        keepOriginal = false;
                }
                if (keepOriginal)
                    return null;
                else {
                    if (source instanceof Spanned) {
                        SpannableString sp = new SpannableString(sb);
                        TextUtils.copySpansFrom((Spanned) source, start, sb.length(), null, sp, 0);
                        return sp;
                    } else {
                        return sb;
                    }
                }
            }

            private boolean isCharAllowed(char c) {
                Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
                Matcher ms = ps.matcher(String.valueOf(c));
                return ms.matches();
            }
        };
    }

Присоедините этот inputFilter к вашему editText после его нахождения, например так:

mEditText.setFilters(new InputFilter[]{getEditTextFilter()});

Первоначальная заслуга принадлежит @UMAR, который дал идею проверки с использованием регулярного выражения и @KamilSeweryn

Автор: swetabh suman Размещён: 10.02.2017 09:14

18 плюса

Через Xml вы можете легко сделать как следующий код типа в xml (editText) ...

android:digits="abcdefghijklmnopqrstuvwxyz"

будут приняты только символы ...

Автор: Naveed Ashraf Размещён: 24.10.2013 04:04

8 плюса

Поместите код редактировать текст XML-файл,

   android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Автор: Najib Ahmed Puthawala Размещён: 12.03.2016 07:30

5 плюса

Разрешить только алфавиты в EditText Android:

InputFilter letterFilter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            String filtered = "";
            for (int i = start; i < end; i++) {
                char character = source.charAt(i);
                if (!Character.isWhitespace(character)&&Character.isLetter(character)) {
                    filtered += character;
                }
            }

            return filtered;
        }

    };
editText.setFilters(new InputFilter[]{letterFilter}); 
Автор: Umar Waqas Размещён: 21.09.2017 08:47

5 плюса

Для пробелов вы можете добавить один пробел в цифрах. Если вам нужны какие-либо специальные символы, такие как точка, запятая также вы можете добавить в этот список

android: digits = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

Автор: Naveen Kumar M Размещён: 10.09.2016 04:32

2 плюса

Попробуй это

<EditText
  android:id="@+id/EditText1"
  android:text=""
  android:inputType="text|textNoSuggestions"
  android:textSize="18sp"
  android:layout_width="80dp"
  android:layout_height="43dp">
</EditText>

Другие inputType можно найти здесь ..

Автор: Vinayak Bevinakatti Размещён: 02.03.2010 08:59

1 плюс

Если кто-то все еще хочет это, Java регулярное выражение для поддержки Unicode? хороший Это когда вам нужны ТОЛЬКО буквы (независимо от того, какая кодировка - японская, шведская) - это EditText. Позже вы можете проверить это с помощью MatcherиPattern.compile()

Автор: mdzeko Размещён: 18.02.2015 05:56
Вопросы из категории :
32x32