我有一个十进制签名的EditText(所以它不可能写一个逗号)。我在上面放了一个TextWatcher,但它只能监听允许写的字符。
但是我想在用户尝试编写逗号以显示祝酒词时抓住。
怎么可能这样做?
谢谢
答案 0 :(得分:1)
您可以将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) {
}
});
这将使用户无法输入逗号。希望它有所帮助!
答案 1 :(得分:1)
所以我尝试了在您使用actionId
的评论中提出的建议,而不是使用KeyEvent event
,我使用了KeyCode.KEYCODE_COMMA
并检查了它的值是否相等到KeyEvent.ACTION_DOWN
。不幸的是,它没有用。在社区和许多其他网站上搜索了如何做到这一点,但我能做的最接近的是检测EditText
。
我认为,由于EditText
的设置已经限制输入逗号,系统本身也会忽略它。有一件事我不知道是为什么要抓住它,如果用户无法做到这一点?
我建议您使用 hint (如果我认为您的用例正确)通知用户应该为特定的{{1}}输入。或者您可以尝试创建自己的软键盘。 :d
但是,如果你这样做,设法为此找到解决方法,请告诉我们。我非常感兴趣。 :)
干杯! :d
答案 2 :(得分:1)
尝试在编辑文本中指定您的角色 这样可能会对你有所帮助 机器人:位数= “ABCDE ..... 012345789”