java使用过滤器以编程方式设置EditText数字
我试图用模式“9999”(其中9是数字0-9)编程设置EditText的数字值。到目前为止,我已经:
final EditText editText = new EditText(v.getContext());
editText.setLayoutParams(params);
editText.setText("");
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLenght)});
editText.addTextChangedListener(new TextWatcher() {
int len=0;
//int count=0;
@Override
public void afterTextChanged(Editable s) {
String str = editText.getText().toString();
if(str.length()==1&& len <str.length()){//len check for backspace
editText.append(",");
}
}
@Override
public void beforeTextChanged(CharSequence c, int arg1, int arg2, int arg3) {
String str = editText.getText().toString();
len = str.length();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String str = editText.getText().toString();
}
});
这不是最好的,因为:
- DigitsKeyListener不会接受分隔符李>
- 当我输入“1,0”和 然后返回2倍的空格,我可以输入“11111”。我得退三步 然后当我输入“11111”时,它将是“11111”
有什么想法吗
# 1 楼答案
您可以尝试将
afterTextChange()
方法更改为