Android EditText inputType无效

时间:2015-06-25 08:24:34

标签: android android-edittext

我正在尝试将每个单词的首字母大写,但输入类型不起作用。知道我在这里做错了什么吗? 这是我的xml片段:

      <EditText
            android:id="@+id/firstName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="false"
            android:inputType="text|textCapWords"/>

4 个答案:

答案 0 :(得分:-2)

我不是在编写很多Android应用程序,但是你不应该离开android:inputType="textCapWords" 而不是android:inputType="text|textCapWords"

答案 1 :(得分:-2)

这将有所帮助

android:inputType="textCapWords"

答案 2 :(得分:-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);
    }

您只需要在找到edittext并在参数中传递editText时调用此方法。

答案 3 :(得分:-3)

您可以在EditText上使用Set android:inputType="textCapSentences"

 <EditText
            android:id="@+id/firstName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textCapSentences"/>

说明 textCapSentences可以与文本及其变体结合使用,以请求每个句子的第一个字符的大写。对应于TYPE_TEXT_FLAG_CAP_SENTENCES。