我有一个EditText
,我需要用大写字母开头的文字(当用户输入时)。
答案 0 :(得分:142)
如果同时添加android:capitalize="sentences"
和android:inputType="text"
,请务必小心,因为后者似乎优先于第一个而且输入不会大写。
有一个特定的inputType
用于自动将第一个字母大写:
android:inputType="textCapSentences"
请参阅http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType
答案 1 :(得分:20)
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.
答案 2 :(得分:12)
使用
android:inputType="textPersonName|textCapWords"
仅使用"textPersonName"
是不够的,因此名字的第一个字母将被大写。
与邮政地址类似:
android:inputType="textPostalAddress|textCapSentences"
答案 3 :(得分:8)
在XML
android:inputType="textCapWords"
android:inputType="textCapSentences"
将适用于句子。但是,我需要将全名字段中的每个单词都大写。
答案 4 :(得分:6)
试试这种方式,
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
或android:inputType="textCapSentences"
仅在您的设备键盘自动大写设置已启用时才有效。
答案 5 :(得分:3)
在布局xml中,添加android:inputType=textCapSentences
答案 6 :(得分:2)
在布局xml中,添加android:capitalize="sentences"
答案 7 :(得分:2)
您使用了“强制”一词。所以试试吧。只需将您的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);
}
答案 8 :(得分:2)
如果密码以大写字母开头,则为:
android:inputType="textPassword|textCapSentences"
答案 9 :(得分:1)
将其粘贴到您的edittext(xml)中:
android:capitalize="sentences"
答案 10 :(得分:1)
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
答案 11 :(得分:0)
如果遇到设置android:inputType = textCapSentences的烦人案例,然后以单行EditText结尾的情况,这里是解决方法:
android:inputType="textCapSentences|textMultiLine"