EditText软数字键盘有时不允许数字

时间:2015-11-28 04:35:37

标签: android android-edittext

以下代码生成EditText(目标版本23)。我已经为此工作了大约8个小时,并且收到了一些建议,但我认为以前没有人见过这个,所以我仍然卡住了。

  1. 点击该字段。
  2. A / N软键盘打开。
  3. 点击123?左下角的按钮。打开数字软键盘。
  4. 按任意数字。什么都没发生。
  5. 长按5," 5/8"被添加到文本字段中。
  6. 按任意特殊字符,例如@。它可能会增加到现场。
  7. 清除字段。键入"对于",按123?,现在它将采用数字。
  8. 清除字段。输入"对于?",按123?,它不会占用数字。
  9. 我添加了一个TextWatcher。如果数字没有发布,TextWatcher也没有看到它们。

    EditText bottomT = new EditText(model);
    bottomT.setTextSize(14);
    bottomT.setHint("ZIP");  
    bottomT.setHintTextColor(Color.BLACK);
    bottomT.setBackgroundColor(Color.WHITE);
    bottomT.setTextColor(Color.BLACK);
    // bottomT.setInputType(InputType.TYPE_CLASS_NUMBER)  Didn't make any difference.
    // bottomT.setRawInputType(InputType.TYPE_CLASS_NUMBER)  Didn't make any difference.
    // bottomT.setText("", TextView.BufferType.EDITABLE);  DIdn't make a difference
    bottomT.setText(""); 
    

3 个答案:

答案 0 :(得分:1)

EditText行为不端,因为在我的自定义ViewGroup中有

 protected void onLayout(boolean changed, int l, int t, int r, int b)
{
....
     child.layout(child.getLeft(), child.getTop(),
                    child.getLeft() + child.getMeasuredWidth(),
                    child.getTop() + child.getMeasuredHeight());

     child.setRight(somevalue);   // CAUSES EDITTEXT PROBLEMS
     child.setBottom(somevalue);  // CAUSES EDITTEXT PROBLEMS

现在很清楚我不能设置setRight()和setBottom(),但是也很清楚EditText不应该变得怪异。

忽略退格键。

随机忽略数字键,但接受小数点。

忽略newLine(Enter)键

哪些键被忽略或取消,取决于设备。三星Tab 4或Nexus 5 API 23 X86仿真器是看到这个的好地方。

答案 1 :(得分:0)

您必须在java代码中添加此行。

bottomT.setInputType(EditorInfo.TYPE_CLASS_NUMBER);

答案 2 :(得分:0)

试试这行代码。

bottomT.setInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_NUMBER_FLAG_DECIMAL);