【问题标题】:Why does my EditText box allow usage of plus sign为什么我的 EditText 框允许使用加号
【发布时间】:2015-03-25 10:04:32
【问题描述】:

这实际上是我作业的一部分,我的朋友也做过类似的事情,但问题只发生在我身上。这是我的 xml 代码:

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal|numberSigned"
    android:id="@+id/sheepNumBox"/>

出于某种原因,我可以在 EditText 框中输入“+”,而它不应该输入,有什么想法吗?

【问题讨论】:

  • 显然,因为'+'是一个数字符号...
  • 通过阅读本网站上其他问题的答案,我了解到不应启用它。我的朋友也有几乎相同的 xml 代码,只有我的允许'+'。
  • 那么你理解错了......不要相信 android:inputType ... AFAIK 这只是键盘的提示(你知道 android 用户可以使用自定义键盘)而不是过滤器......所以它取决于用户使用的键盘,有些键盘实现可以认真对待,有些不...
  • 这是有道理的,但它仍然不能解释为什么在许多参加课程的人中这种情况只发生在我身上。还请查看 cmets 对这个问题的答案stackoverflow.com/questions/14488060/… 他们也不会同意您的评论。

标签: android xml android-edittext


【解决方案1】:

添加此代码..

  final EditText editText = findViewById(R.id.sheepNumBox);
    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) {
            String text = editText.getText().toString().trim();
            if (text.contains("+")) {
                text.replace("+", "");
                editText.settext(text);
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

【讨论】:

  • 首先,即使此解决方案有效,我也想知道它最初启用但不应该启用的原因。其次,这不起作用,因为您没有更改edittext中的实际文本,如果您这样做可能会导致无限循环(可以避免,但无论如何这不是我想要的)。
  • 更新后的代码导致无限循环和堆栈溢出。
  • 那是我添加它的地方。你忘记了当你使用setText() 函数onTextChanged() 被再次调用。
  • 不,它不会被调用,因为下一次文本不会有加号,因此不会再次设置文本,因为 if 条件!
  • 我复制了这个确切的代码并从这个确切的调用中得到了 stackOverflowException。
【解决方案2】:

试试这个..

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:id="@+id/sheepNumBox"/>

【讨论】:

  • 这不是一个选项,因为我还需要能够输入负数。我希望它保持不变,但不能输入“+”。通过阅读本网站上的其他问题,默认情况下不应该启用它,我不知道为什么在我的应用上启用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 2015-08-03
  • 2020-04-27
  • 2013-05-08
相关资源
最近更新 更多