11 ответов:
будьте осторожны, если вы добавите
android:capitalize="sentences"иandroid:inputType="text", поскольку последний, по-видимому, имеет приоритет над первым, и ввод не будет капитализирован.есть конкретная
inputTypeдля автоматической заглавной буквы:
android:inputType="textCapSentences"см http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
варианты android: capitalize are
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.
использовать
android:inputType="textPersonName|textCapWords"как используя только
"textPersonName"недостаточно, чтобы первые буквы имени были заглавными.аналогично и с почтовыми адресами:
android:inputType="textPostalAddress|textCapSentences"
добавьте это в свой
XMLandroid:inputType="textCapWords"
android:inputType="textCapSentences"будет работать для предложений. Однако мне нужно было прописать каждое слово в поле полного имени.
попробуйте этот способ,
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);или
android:inputType="textCapSentences"будет работать только если клавиатура вашего устройства Auto Capitalize параметр включен.
в XML макета добавьте
android:capitalize="sentences"
вы использовали слово "принудительно". Так что попробуй это. Просто передайте свой 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); }
в случае пароля, который начинается с верхнего регистра, это будет:
android:inputType="textPassword|textCapSentences"
Comments