Как заставить EditText начинать текст с заглавной буквы?

У меня есть EditText, и мне нужно, чтобы текст в нем (когда пользователь вводил) начинался с заглавной буквы.

Ответ 1

Будьте внимательны, если добавить как android:capitalize="sentences", так и android:inputType="text", поскольку последний, по-видимому, имеет приоритет над первым, а ввод не будет заглавным.

Здесь существует специальная inputType для автоматической заглавной буквы первой буквы:

android:inputType="textCapSentences"

См. http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

Ответ 2

Варианты для Android: заглавные буквы являются

android:capitalize="none", which won't automatically capitalize anything.

android:capitalize="sentences", Which will capitalize the first word of each sentence.

android:capitalize="words", Which Will Capitalize The First Letter Of Every Word.

android:capitalize="characters", WHICH WILL CAPITALIZE EVERY CHARACTER.

Очевидно, он был изменен на inputType вместо capitalize

Ответ 3

Использование

android:inputType="textPersonName|textCapWords"

поскольку использование только "textPersonName" недостаточно, так что имена первых букв будут заглавные.

Аналогично почтовым адресам:

android:inputType="textPostalAddress|textCapSentences"

Ответ 4

Добавьте это в свой XML

 android:inputType="textCapWords"

android:inputType="textCapSentences" будет работать для предложений. Однако мне нужно было использовать каждое слово в поле полного имени.

Ответ 5

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

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

или android:inputType="textCapSentences" будет работать только в том случае, если включена автоматическая настройка клавиатуры устройства.

Ответ 6

В макете xml добавьте android:inputType=textCapSentences

Ответ 8

Вы использовали слово "Enforce". Поэтому попробуйте это. Просто передайте свой edittext в качестве аргумента.

public static void setCapitalizeTextWatcher(final EditText editText) {
    final TextWatcher textWatcher = new TextWatcher() {

        int mStart = 0;

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            mStart = start + count;
        }

        @Override
        public void afterTextChanged(Editable s) {
             String input = s.toString();
            String capitalizedText;
            if (input.length() < 1)
                capitalizedText = input;
            else
                capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);
            if (!capitalizedText.equals(editText.getText().toString())) {
                editText.addTextChangedListener(new TextWatcher() {
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {

                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        editText.setSelection(mStart);
                        editText.removeTextChangedListener(this);
                    }
                });
                editText.setText(capitalizedText);
            }
        }
    };

    editText.addTextChangedListener(textWatcher);
}

Ответ 9

В случае пароля, который начинается с верхнего регистра, он будет:

android:inputType="textPassword|textCapSentences"

Ответ 10

Вставьте это в свой edittext (xml):

  android:capitalize="sentences"

Ответ 11

edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});

Ответ 12

в случае, если вы столкнулись с досадным случаем установки android: inputType = textCapSentences с последующим однострочным EditText, вот решение:

    android:inputType="textCapSentences|textMultiLine"