EditText가 대문자로 텍스트를 시작하도록 강제하는 방법은 무엇입니까?


78

나는이 EditText내가 (사용자 유형에)가 대문자로 시작하는 그 텍스트를해야합니다.


3
검색 가능성에 대한 +1 : P
표시 이름

답변:


160

당신이 모두를 추가 할 경우주의해야 android:capitalize="sentences"하고 android:inputType="text", 후자는, 제 1 및 입력이 대문자로하지 않습니다 우선 순위를 가지고 보인다.

inputType첫 글자를 자동으로 대문자로 바꾸는 구체적인 방법이 있습니다 .

android:inputType="textCapSentences"

http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType을 참조하세요.


1
좋은 팁! 나는 둘 다 가지고 있었고 Nexus One과 Galaxy Nexus에서 예상대로 작동했습니다. 그러나 HTC Sense 장치에서는 단어가 대문자로 표시되지 않았습니다. android : inputType이 트릭이었습니다.
BoD

10
경고의 말씀 : 제 경우에는 필드가 사람의 이름이 될 것이기 때문에 android : inputType = "textPersonName"을 설정했습니다. 예상대로 작동하지 않았습니다. 이름의 각 단어를 대문자로 표시하려면 android : inputType = "textCapWords"를 사용해야했습니다.
Jeff G

2
android : capitalize = "sentences"는이 태그를 사용해서는 안됩니다. bcuz는 더 이상 사용되지 않습니다
pioneerBhawna

android : inputType = "textMultiLine"이면 어떻게됩니까?
KRP 2014 년

12
그런 다음 사용android:inputType="textMultiLine|textCapSentences"
4mnes7y 2014

23

android : capitalize 옵션은 다음 과 같습니다.

android:inputType="none", which won't automatically capitalize anything.

android:inputType="sentences", Which will capitalize the first word of each sentence.

android:inputType="words", Which Will Capitalize The First Letter Of Every Word.

android:inputType="characters", WHICH WILL CAPITALIZE EVERY CHARACTER.

분명히 그것은 inputType대신에 변경되었습니다capitalize


3
이 메소드는 더 이상 사용되지 않습니다.
h8pathak

이 방법을 선호하려면 @ h8pathak inputType을 사용해야합니다.
Joel Dean

17

사용하다

android:inputType="textPersonName|textCapWords"

만 사용하는 것만으로 "textPersonName"는 충분하지 않으므로 이름의 첫 글자는 대문자로 표시됩니다.

우편 주소와 마찬가지로 :

android:inputType="textPostalAddress|textCapSentences"

"da Silva"또는 "von Anhalt"와 같은 이름에는 적합하지 않습니다.
ham

8

이것을 당신의 XML

 android:inputType="textCapWords"

android:inputType="textCapSentences"문장에서 작동합니다. 그러나 전체 이름 필드의 모든 단어를 대문자로 표기해야했습니다.


6

이렇게 해봐

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

또는 android:inputType="textCapSentences"장치 키보드 자동 대문자 설정이 활성화 된 경우에만 작동합니다 .


받아 들여지는 대답은 훌륭하지만 코딩 대답을 찾고 있었는데 이것이 작동합니다. tx
Boris Gafurov


3

"시행"이라는 단어를 사용하셨습니다. 그래서 이것을 시도하십시오. 편집 텍스트를 인수로 전달하십시오.

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);
}



1

이것을 edittext (xml)에 붙여 넣으십시오.

  android:capitalize="sentences"

1
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});

이 코드 스 니펫은 질문을 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 큰 도움이됩니다. 미래에 독자를 위해 질문에 답하고 있으며 해당 사용자는 코드 제안 이유를 모를 수 있습니다. 또한 설명 주석으로 코드를 복잡하게 만들지 마십시오. 이렇게하면 코드와 설명의 가독성이 떨어집니다!
인 Ashish Ahuja

1

android : inputType = textCapSentences 설정의 성가신 경우가 발생한 경우 한 줄짜리 EditText로 끝나는 경우 해결책은 다음과 같습니다.

    android:inputType="textCapSentences|textMultiLine"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.