如何在EditText中仅允许特定数字?

3
我正在尝试在我的编辑文本中仅输入特定的值。 我已经在我的布局中使用了以下代码: android:digits="0123468"。 然而,我不希望数字1和3在我的编辑文本中起作用。
例如,输入32时,它会给出一系列项目列表,但输入3则不允许执行任何操作。
请问有人可以帮帮我吗?

在你的EditText上设置一个TextWatcher,检查/操作输入。 - zgc7009
2个回答

1
这可能是一种方法:

(这是HTML代码)

<EditText
android:id="@+id/edtNumber"
android:digits="0123456789"
android:inputType="number" />

如果你想丢弃'1'和'3',你可以像这样获取输入数字:

Integer.parseInt(edtNumber.getText().toString())

并将其与您不想要的值进行比较。


如果出于某种原因,您想要使用小数,请按照以下步骤操作:

<EditText
android:id="@+id/edtNumberDecimal"
android:digits="0123456789."
android:inputType="numberDecimal" />

1
使用正则表达式。
@Override
public void afterTextChanged(Editable s) {
      String text = s.toString();
      int length = text.length();

      Pattern pattern
        = Pattern.compile("(?s)\\d|[024-9]{2,}");

      if(length > 0 && !Pattern.matches(pattern, text)) {
           s.delete(length - 1, length);
      }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接