如何强制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()});