我有一个十进制符号的EditText(所以不可能写逗号)。我在上面放了一个TextWatcher,但它只听允许写入的字符。
但是,当用户尝试编写逗号以显示吐司时,我想抓住。
怎么可能呢?
谢谢
尝试了我在评论中提出的建议,你使用 setOnEditorActionListener()
而不是使用 actionId
,我使用了KeyEvent event
并检查它的值是否等于 KeyCode.KEYCODE_COMMA
.不幸的是,它没有奏效。在社区和许多其他网站上搜索了如何做到这一点,但我能做的最接近的是检测KeyEvent.ACTION_DOWN
。
我认为由于您的EditText
设置已经限制要输入的逗号,因此系统本身也忽略了它。我不明白的一件事是,如果用户无法做到这一点,为什么要抓住它?
我对此的建议是利用提示(如果我对您的用例的看法是正确的)来通知用户应该为该特定EditText
输入的内容。或者您可以尝试创建自己的软键盘。:D
但是,如果您确实设法找到了解决方法,请告诉。我非常感兴趣。:)
干杯!:D
TextWatcher
附加到EditText
(就像您所说的那样),但是您可以实现一个if/else语句来检查EditText
中的值。下面是您可以执行的操作的示例:editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(String.valueOf(s).contains(",")) {
String editTextContent = String.valueOf(editText.getText());
editText.setText(editTextContent.replace(",", ""));
Toast.makeText(getApplicationContext(), "Enter a valid input", Toast.LENGTH_SHORT).show();
} else {
// User entered something valid
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
这将使用户无法输入逗号。希望对您有所帮助!
试试这个 在编辑文本中指定您的字符像这样可能会帮助你android:digits="abcde.....012345789"