Android EditText ( "Текстовое поле" ): автоматическая заливка первой буквы каждого слова во время ввода пользователем

Я знаю, что этот вопрос задал несколько раз, но ответы не работали в моем случае.

Я нашел некоторые из тех же вопросов и ответов в следующих ссылках, которые вообще не работали для меня.

LINK1

LINK2

В моем файле макета я определил свой EditText следующим образом.

 <EditText
    android:id="@+id/test_editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="90dp"
    android:inputType="textCapWords"
    android:ems="10" >

Также в классе Activity в методе onCreate я добавил следующий код.

    EditText testEditText = (EditText) findViewById(R.id.test_editText);
    testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 

Если кто-то испытал ту же проблему и решил, что хотел бы услышать, что я сделал неправильно в моем случае. Благодарю.

редактирует...

Следуя приведенным выше инструкциям, я не могу сделать это, сделав это (автоматически заглавные буквы первой буквы каждого слова во время ввода пользователем).

В соответствии с моим кодом, когда пользователь вводит текст, он отображает первый символ во всех словах (включая первое слово) в нижнем регистре.

Ответ 1

android:inputType="textCapWords"

Работает для меня

Я использовал тот же код xml, который у вас есть в вопросах:

<EditText
    android:id="@+id/test_editText"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="90dp"
    android:ems="10"
    android:inputType="textCapWords" >

Просто проверьте, не перекрываете ли вы атрибут inputType в своей деятельности.

Просто попробуйте, не изменяя ничего в Activity.

Ответ 2

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

or android:inputType="textCapSentences" 

будет работать только в том случае, если включена автоматическая настройка клавиатуры устройства.

Ответ 3

Вот что я сделал. android:inputType="textCapWords" тоже не работает для меня.

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) {
            //Use WordUtils.capitalizeFully if you only want the first letter of each word to be capitalized
            String capitalizedText = WordUtils.capitalize(editText.getText().toString());
            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);
}

Ответ 4

Вы пробовали Android: inputType = "textPersonName"

Ответ 5

следует попробовать с android: inputType = "textCapSentences"?

Ответ 6

Вы пытаетесь создать эмулятор или устройство Android? это работает для меня в эмуляторе   андроид: inputType = "textCapWords"

Ответ 7

Просто добавьте этот код в свой EditText android:capitalize="words", он должен работать.

Ответ 8

Раньше он был android:capitalize="words", который теперь устарел. Рекомендуемая альтернатива - использовать android:inputType="textCapWords"

Обратите внимание, что это будет работать только в том случае, если включена автоматическая настройка клавиатуры устройства.

Чтобы сделать это программно, используйте следующий метод:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

Ответ 9

ПОПРОБУЙТЕ это на вашем макете...

android:inputType="textCapWords|textCapSentences"

отлично работает на меня.. надеюсь, что он работает и на вас...