如何强制EditText以大写字母开始文本?

我有一个EditText ,我需要它的文本(当用户input时)以大写字母开头。

请注意,如果您同时添加了android:capitalize="sentences"android:inputType="text" ,后者似乎比第一个优先,input不会被大写。

有一个特定的inputType用于自动大写第一个字母:

android:inputType="textCapSentences"

请参阅http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

android:capitalize的选项是

 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. 

在你的XML添加这个

  android:inputType="textCapWords" 

android:inputType="textCapSentences"将适用于句子。 但是,我需要在全名字段中大写每个单词。

使用

 android:inputType="textPersonName|textCapWords" 

因为只使用"textPersonName"是不够的,所以名字的第一个字母将被大写。

与邮政地址类似:

 android:inputType="textPostalAddress|textCapSentences" 

试试这个方法,

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

android:inputType="textCapSentences"将只能工作如果您的设备键盘启用了Auto Capitalize Setting。

在布局xml中,添加android:inputType=textCapSentences

在布局xml中,添加android:capitalize="sentences"

将其粘贴到您的edittext(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); } 
 edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});