我需要一个允许用户输入IP地址的键盘,所以我只想允许数字和多个小数点。为了说清楚,我对使用全键盘验证输入值是否正确感兴趣,我希望键盘本身受到限制。我知道如何在XML中执行此操作,如下所示:
android:inputType="number|numberDecimal"
android:digits="0123456789."
这就像一个魅力!
但是现在我需要对后面的代码中的EditText做同样的事情。在寻找相当长的一段时间后,最常见的答案围绕着这个:
EditText text = new EditText(this);
text.setInputType(InputType.TYPE_CLASS_NUMBER);
text.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
text.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
显然我问这个问题的原因是因为这不起作用。我只是得到一个没有小数点的数字键盘。
必须有一种方法,非常感谢任何帮助:)
答案 0 :(得分:1)
您还需要一位听众:
text.setKeyListener(DigitsKeyListener.getInstance(false,false));
这是允许您显示仅包含数字和一个点(但允许您输入多个点)的软键盘的代码。
EditText text = new EditText(this);
text.setInputType(InputType.TYPE_CLASS_NUMBER);
text.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
text.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
text.setKeyListener(DigitsKeyListener.getInstance(false,false));
答案 1 :(得分:0)
text.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);
您编写的代码只会设置您设置的最后一个输入类型。常量是二进制值,因此如果要设置多个输入类型,则需要|
它。如果你在xml中这样做,这是相同的规则。