用于IP地址的Android InputType以编程方式

时间:2015-03-25 09:55:23

标签: android keyboard numbers

我需要一个允许用户输入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."));

显然我问这个问题的原因是因为这不起作用。我只是得到一个没有小数点的数字键盘。

必须有一种方法,非常感谢任何帮助:)

2 个答案:

答案 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中这样做,这是相同的规则。