UMA*_*MAR 55 layout android android-edittext
如何在android中的EditText中只输入字母?
小智 160
使用EditText标记添加此行.
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Run Code Online (Sandbox Code Playgroud)
您的EditText标记应如下所示:
<EditText
android:id="@+id/editText1"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
小智 56
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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
请彻底测试!
UMA*_*MAR 21
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,";
}
Run Code Online (Sandbox Code Playgroud)
swe*_*man 21
对于那些希望他们的editText只接受字母和空格(既不是数字也不是任何特殊字符)的人,那么可以使用它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();
}
};
}
Run Code Online (Sandbox Code Playgroud)
找到后将此inputFilter附加到editText,如下所示:
mEditText.setFilters(new InputFilter[]{getEditTextFilter()});
Run Code Online (Sandbox Code Playgroud)
最初的功劳归功于@UMAR,他提出了使用正则表达式和@KamilSeweryn进行验证的想法
小智 19
通过Xml,您可以轻松地在xml(editText)中输入以下代码...
android:digits="abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)
只接受字符...
放入代码edittext xml文件,
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Run Code Online (Sandbox Code Playgroud)
对于空格,您可以在数字中添加单个空格。如果您需要任何特殊字符,例如圆点,逗号,也可以添加到此列表中
android:digits =“ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
小智 5
在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});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84796 次 |
| 最近记录: |