我有一个十进制签名的 EditText(所以不可能写逗号)。我在上面放了一个 TextWatcher,但它只听允许写入的字符。
但是,当用户尝试写逗号来表示敬酒时,我想捕捉到。
怎么可能做到这一点?
谢谢
我有一个十进制签名的 EditText(所以不可能写逗号)。我在上面放了一个 TextWatcher,但它只听允许写入的字符。
但是,当用户尝试写逗号来表示敬酒时,我想捕捉到。
怎么可能做到这一点?
谢谢
您可以将 a 附加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) {
}
});
这将使用户无法输入逗号。希望能帮助到你!
所以我尝试了我在评论中提出的建议,你使用setOnEditorActionListener()
而不是使用actionId
,我使用KeyEvent event
并检查它的值是否等于KeyCode.KEYCODE_COMMA
。不幸的是,它没有用。在社区和许多其他网站上搜索如何做到这一点,但我能做的最接近的就是检测KeyEvent.ACTION_DOWN
.
我认为由于您的设置EditText
已经限制了要输入的逗号,因此系统本身也忽略了它。我不明白的一件事是,如果用户无法做到这一点,为什么要抓住它?
我对此的建议是利用提示(如果我认为您的用例是正确的)来通知用户应该为该特定输入的内容EditText
。或者您可以尝试创建自己的软键盘。:D
但是,如果您确实找到了解决方法,请告诉。我非常感兴趣。:)
干杯! :D
试试这个在你的编辑文本中指定你的角色可能会帮助你 android:digits="abcde.....012345789"