your programing

EditText를 만드는 방법은 Android에서만 알파벳을 허용합니까?

lovepro 2020. 12. 31. 23:10
반응형

EditText를 만드는 방법은 Android에서만 알파벳을 허용합니까?


Android에서 EditText에 알파벳 만 입력하려면 어떻게해야합니까?


EditText 태그와 함께이 줄을 추가하십시오.

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

EditText 태그는 다음과 같아야합니다.

<EditText
        android:id="@+id/editText1"
        android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

edittext.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
                int end, Spanned dst, int dstart, int dend) {
            if(src.equals("")){ // for backspace
                return src;
            }
            if(src.toString().matches("[a-zA-Z ]+")){
                return src;
            }
            return edittext.getText().toString();
        }
    }
});

그래도 철저히 테스트하십시오!


EditText state = (EditText) findViewById(R.id.txtState);


                Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
                Matcher ms = ps.matcher(state.getText().toString());
                boolean bs = ms.matches();
                if (bs == false) {
                    if (ErrorMessage.contains("invalid"))
                        ErrorMessage = ErrorMessage + "state,";
                    else
                        ErrorMessage = ErrorMessage + "invalid state,";

                }

editText가 알파벳과 공백 (숫자도 특수 문자도 아님) 만 허용하도록하려면 this를 사용할 수 있습니다 InputFilter. 여기에서 이름이 지정된 메서드를 만들고 그 getEditTextFilter()안에 InputFilter를 작성했습니다.

public static InputFilter getEditTextFilter() {
        return new InputFilter() {

            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

                boolean keepOriginal = true;
                StringBuilder sb = new StringBuilder(end - start);
                for (int i = start; i < end; i++) {
                    char c = source.charAt(i);
                    if (isCharAllowed(c)) // put your condition here
                        sb.append(c);
                    else
                        keepOriginal = false;
                }
                if (keepOriginal)
                    return null;
                else {
                    if (source instanceof Spanned) {
                        SpannableString sp = new SpannableString(sb);
                        TextUtils.copySpansFrom((Spanned) source, start, sb.length(), null, sp, 0);
                        return sp;
                    } else {
                        return sb;
                    }
                }
            }

            private boolean isCharAllowed(char c) {
                Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
                Matcher ms = ps.matcher(String.valueOf(c));
                return ms.matches();
            }
        };
    }

이 inputFilter를 찾은 후 editText에 다음과 같이 연결하십시오.

mEditText.setFilters(new InputFilter[]{getEditTextFilter()});

원래 크레딧은 정규 표현식과 @KamilSeweryn을 사용하여 유효성 검사를 제안한 @UMAR에게 돌아갑니다.


Xml을 통해 xml (editText)에서 코드를 입력하면 쉽게 할 수 있습니다.

android:digits="abcdefghijklmnopqrstuvwxyz"

문자 만 허용됩니다 ...


코드 edittext xml 파일을 넣고,

   android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

EditText android에서 알파벳 만 허용 :

InputFilter letterFilter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            String filtered = "";
            for (int i = start; i < end; i++) {
                char character = source.charAt(i);
                if (!Character.isWhitespace(character)&&Character.isLetter(character)) {
                    filtered += character;
                }
            }

            return filtered;
        }

    };
editText.setFilters(new InputFilter[]{letterFilter}); 

For spaces, you can add single space in the digits. If you need any special characters like the dot, a comma also you can add to this list

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "


If anybody still wants this, Java regex for support Unicode? is a good one. It's for when you want ONLY letters (no matter what encoding - japaneese, sweedish) iside an EditText. Later, you can check it using Matcher and Pattern.compile()


Try This

<EditText
  android:id="@+id/EditText1"
  android:text=""
  android:inputType="text|textNoSuggestions"
  android:textSize="18sp"
  android:layout_width="80dp"
  android:layout_height="43dp">
</EditText>

Other inputType can be found Here ..

ReferenceURL : https://stackoverflow.com/questions/2361497/how-to-create-edittext-accepts-alphabets-only-in-android

반응형