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

时间:2011-09-12 10:13:28

标签: android

我有一个EditText,我需要用大写字母开头的文字(当用户输入时)。

12 个答案:

答案 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"