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"
отлично работает на меня.. надеюсь, что он работает и на вас...