Заглавная буква для EditText

Я работаю над небольшим личным списком приложений, и до сих пор все работает очень хорошо. Есть одна небольшая причуда, которую я хотел бы выяснить. Всякий раз, когда я иду добавить новый элемент, у меня есть диалоговое окно с изображением EditText, отображаемым внутри. Когда я выбираю вид EditText, клавиатура подходит для ввода текста, как и должно быть. В большинстве приложений по умолчанию кажется, что клавиша shift удерживается для первой буквы … хотя это не делает этого для моего представления. Должен быть простой способ исправить, но я неоднократно искал ссылку и не могу ее найти. Я думаю, что должен быть атрибут xml для ссылки, загружаемой адаптером, но я не могу понять, что это такое.

Статически (т. android:inputType="textCapSentences" вашем XML-файле макета): установите android:inputType="textCapSentences" в вашем EditText .

Программно: вы должны включить InputType.TYPE_CLASS_TEXT в InputType для EditText , например

 EditText editor = new EditText(this); editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

Может сочетаться с текстом и его вариантами, чтобы запросить капитализацию первого символа каждого предложения.

– Гугл документы

Просто используйте android:inputType="textCapWords" в элементе EditText.

Например:

 <EditText android:id="@+id/txtName" android:layout_width="0dp" android:layout_height="40dp" android:layout_weight="0.7" android:inputType="textCapWords" android:textColorHint="#aaa" android:hint="Name Surname" android:textSize="12sp" /> 

Обратитесь к следующей ссылке для справки: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

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

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

Я столкнулся с той же проблемой, просто поделился тем, что узнал. Может помочь вам и другим …

Попробуйте это на вашем макете. Добавьте следующую строку в свой EditText .

 android:inputType="textCapWords|textCapSentences" 

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

Примените следующую строку в своем тесте редактирования в xml.

 android:inputType="textCapSentences|textMultiLine" 

Это также позволит поддерживать многострочные линии.

Попробуйте этот код, он будет использовать первый символ всех слов.

– установить addTextChangedListener для просмотра EditText

edt_text.addTextChangedListener (наблюдающий);

– Добавить TextWatcher

 TextWatcher watcher = 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 if (input.length() > 1 && input.contains(" ")) { String fstr = input.substring(0, input.lastIndexOf(" ") + 1); if (fstr.length() == input.length()) { capitalizedText = fstr; } else { String sstr = input.substring(input.lastIndexOf(" ") + 1); sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1); capitalizedText = fstr + sstr; } } else capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); if (!capitalizedText.equals(edt_text.getText().toString())) { edt_text.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) { edt_text.setSelection(mStart); edt_text.removeTextChangedListener(this); } }); edt_text.setText(capitalizedText); } } }; 

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

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

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

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);