强制EditText大写每个单词的第一个字母,这两种方法都不起作用

时间:2014-02-11 17:04:57

标签: android

既不是

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

,也不

android:inputType=textCapSentences / textCapWords

为我的手机工作? (三星Galaxy S2 Android 2.3.4)

android:capitalize="sentences"

已被弃用

那我该怎么办?我阅读了很多主题,似乎所有这些方法都适用于提出问题的人。我还读了一个关于Word Capitalization并不总是被尊重的话题,因为它是一个建议而不是一个指令,但这对我没有帮助。我希望第一个字母大写......

2 个答案:

答案 0 :(得分:0)

设置android:inputType =" textCapWords"你的edittext xml。

答案 1 :(得分:0)

这就是我所做的。 android:inputType="textCapWords"也不适合我。

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) {
            //Use WordUtils.capitalizeFully if you only want the first letter of each word to be capitalized
            String capitalizedText = WordUtils.capitalize(editText.getText().toString());
            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);
}