我想将我的 EditText 限制为仅特定字符,例如(az、AZ、0-9、空格等)。
如果用户尝试输入列表之外的其他字符,则不应在edittext中显示。
有没有办法做到这一点?
我想将我的 EditText 限制为仅特定字符,例如(az、AZ、0-9、空格等)。
如果用户尝试输入列表之外的其他字符,则不应在edittext中显示。
有没有办法做到这一点?
尝试这个:
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
edit.setFilters(new InputFilter[]{filter});
这里是给你的解决方案......
只需将字符添加到您想要的字符串中allowed
final String allowed = "abcdefghijklmnopqrstuvwxyz";
final EditText editText = (EditText)findViewById(R.id.edit001);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
char currentChar = s.charAt(start);
System.out.println(currentChar);
if(allowed.contains(Character.toString(currentChar)))
{
//Nothing to do
}
else
{
editText.setText(editText.getText().toString().substring(0, editText.getText().toString().length()-1));
int position = editText.length();
Editable etext = editText.getText();
Selection.setSelection(etext, position);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
你可以用这个
yourEditText.addTextChangedListener()
然后,您查看用户输入是否符合您的限制,并选择要显示的字符。