У меня есть 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
Ответ 7
В макете xml добавьте android:capitalize="sentences"
Ответ 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"