在我的应用程序中,我有EditText
。我希望用户只能插入我指定的数字和两个字符。我知道存在,android:digits="..."
但我不能使用它,因为我从上下文中得到这两个字符。现在我写了 KeyListener:
public class CurrencyKeyListener implements KeyListener {
@Override
public void clearMetaKeyState(View view, Editable content, int states) {
// TODO Auto-generated method stub
}
@Override
public int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
}
@Override
public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
CharFormatter charFormatter = new CharFormatter(view.getContext());
char pressedKey = (char) event.getUnicodeChar();
if (Character.isDigit(pressedKey) || pressedKey == currencyFormatter.getDecimalSeparator()
|| pressedKey == currencyFormatter.getGroupingSeparator()) {
return false;
}
return true;
}
}
但当然它不起作用,我不知道如何解决这个问题。此侦听器会阻止许多重要字符,例如清除按钮,并允许输入许多我不想允许的字符。然后在一些随机的时刻,它挡住了我的整个键盘。
有谁知道如何正确编写这个 KeyListener?提前致谢。