数字EditText和TextWatcher

时间:2016-05-20 21:02:35

标签: android android-edittext android-textwatcher

我有一个十进制签名的EditText(所以它不可能写一个逗号)。我在上面放了一个TextWatcher,但它只能监听允许写的字符。

但是我想在用户尝试编写逗号以显示祝酒词时抓住。

怎么可能这样做?

谢谢

3 个答案:

答案 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”