2015-03-25 33 views
0

这实际上是我家庭作业的一部分,我的朋友也做了类似的事情,但问题只出现在我身上。这是我的XML代码:为什么我的EditText框允许使用加号

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

出于某种原因,我可以键入“+”到的EditText框,同时它不应该,任何想法,为什么?

+0

明显,因为 '+' 是一个数字符号... – Selvin 2015-03-25 10:09:06

+0

从这个网站阅读回答其他问题我了解它不应该启用。我的朋友也有几乎相同的XML代码,只有我的允许'+'。 – tba 2015-03-25 10:17:51

+1

然后你明白它错了...不信任android:inputType ... AFAIK它只是一个键盘提示(因为你知道android用户可以使用自定义键盘)不是过滤器...所以它取决于键盘使用用户和一些键盘的实现可以认真对待它,有些不是... – Selvin 2015-03-25 10:21:25

回答

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) { 

     } 
    }); 
+0

首先即使这个解决方案的工作原理我想知道什么可能是它在第一个地方启用,而它不应该。 其次,这不起作用,因为你没有改变edittext中的实际文本,如果你这样做,它可能会导致无限循环(这可以避免,但无论如何,这不是我正在寻找)。 – tba 2015-03-25 10:35:35

+0

查看更新的答案 – Sjd 2015-03-25 10:37:55

+0

更新的代码导致无限循环和堆栈溢出。 – tba 2015-03-25 10:44:15

0

试试这个..

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

这不是一个选项,因为我需要能够输入负数。我希望它保持不变,但不能键入'+'。从阅读本网站上的其他问题,这不应该默认启用,我不知道它为什么在我的应用程序启用。 – tba 2015-03-25 10:11:51

相关问题