1

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

但是,当用户尝试写逗号来表示敬酒时,我想捕捉到。

怎么可能做到这一点?

谢谢

4

3 回答 3

1

您可以将 a 附加TextWatcherEditText(如您所说),但随后您可以实现 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) {

    }
});

这将使用户无法输入逗号。希望能帮助到你!

于 2016-05-20T21:29:23.970 回答
1

所以我尝试了我在评论中提出的建议,你使用setOnEditorActionListener()而不是使用actionId,我使用KeyEvent event并检查它的值是否等于KeyCode.KEYCODE_COMMA。不幸的是,它没有用。在社区和许多其他网站上搜索如何做到这一点,但我能做的最接近的就是检测KeyEvent.ACTION_DOWN.

我认为由于您的设置EditText已经限制了要输入的逗号,因此系统本身也忽略了它。我不明白的一件事是,如果用户无法做到这一点,为什么要抓住它?

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

但是,如果您确实找到了解决方法,请告诉。我非常感兴趣。:)

干杯! :D

于 2016-05-23T06:49:45.537 回答
1

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

于 2016-05-23T07:16:55.567 回答