数字 EditText 和 TextWatcher

Numeric EditText and TextWatcher

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

但是我想在用户试图写一个逗号来表示敬酒时捕捉到。

这怎么可能?

谢谢

您可以将 TextWatcher 附加到 EditText(如您所说),但随后您可以执行 if/else 语句来检查 EditText 中的值.以下是您可以执行的操作的示例: editText.addTextChangedListener(新的 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的设置是已经限制输入逗号了,系统本身也忽略了。我不明白的一件事是,如果用户无法做到这一点,为什么要抓住它?

我对此的建议是利用 hint如果我认为您的用例是正确的) 来通知用户应该为特定 EditText 输入什么。或者您可以尝试创建自己的软键盘。 :D

但是,如果您找到了解决方法,请告知。我很感兴趣。 :)

干杯! :D

试试这个在你的编辑文本中指定你的角色 像这样可能会帮助你 android:digits="abcde.....012345789"