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
'your programing' 카테고리의 다른 글
빌드 타임 스탬프를 APK에 쓰는 방법 (0) | 2020.12.31 |
---|---|
나뭇 가지 함수에서 절대 경로를 사용하는 방법 (0) | 2020.12.31 |
문자열의 문자 수를 제한하고 나머지는 잘라 내기 (0) | 2020.12.31 |
Google지도 v3에서 다각형의 중심을 얻는 방법은 무엇입니까? (0) | 2020.12.31 |
C # 안티 패턴 (0) | 2020.12.31 |