我需要阻止用户在数字.
上输入键盘上的EditText
(句点)字符,但我需要能够在同一EditText
上使用它通过setText
方法。
我已尝试使用InputFilter
,但当我致电setText
时,.
字符不会显示。我还尝试在digits
中设置xml
参数,但setText也不起作用。
有办法做到这一点吗?
这是我的InputFilter代码:
public static InputFilter blockPeriod(){
return new InputFilter() {
@Override
public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
for (int j = i; j <i1 ; j++) {
char c = charSequence.charAt(j);
if (!allowed(c)){
return "";
}
}
return null;
}
private boolean allowed(char c){
return c != '.';
}
};
}
答案 0 :(得分:1)
您可以使用InputFilter
执行此操作,但在调用setText()方法时需要允许它一段时间。
private static class AllowableInputFilter implements InputFilter {
private boolean mAllowDot;
public void setAllowDot(boolean toAllow) {
mAllowDot = toAllow;
}
....
private boolean allowed(char c){
return mAllowDot || c != '.';
}
}
public void forceText(String text) {
mInputFilter.setAllowDot(true);
mEditText.setText(text);
mInputFilter.setAllowDot(false);
}
mInputFilter = new AllowableInputFilter();
mInputFilter.setAllowDot(false);
mEditText.setFilters(new InputFilter[] {mInputFilter});
forceText("Okaaayy....");
答案 1 :(得分:0)
试试这个:
if (textedit.getText().toString().startsWith(".")){
//Do something about it
}
现在进入。你可以显示一条消息或其他东西。也可以将此代码放在onTextChanged方法(文本观察者)下。
希望它可以帮助你。
答案 2 :(得分:0)
EditText中xml内的用户数字属性
android:digits="0123456789"
所以现在edittext只允许从0到9的数字