在Android中如何通过编程方式设置EditText只能输入",0123456789"这些字符?

14

我的问题是这样的。

我可以在xml中说

android:digits="0123456789,"

但这次我必须通过Java代码添加它。

customEditText.setKeyListener(DigitsKeyListener.getInstance("0123456789,"));

代码不起作用。应用程序给出与android:InputType="number"相同的结果。

那么,有没有其他方法可以使用Java来表示android:digits?

编辑

所以我的问题不是如何在Java中获取android:InputType="number"

我的问题是如何获取android:digits="0123456789,"以便在Java中使用。

此时,我不关心用户是否能看到字符。我只想让我的EditText字段仅接受从0到9和十进制逗号(,)的数字。

由于customEdittext实际上是一个自定义的EditText,因此我目前不能使用xml。

5个回答

11
尝试使用 customEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

我不想使用数字,因为这样我就无法使用小数点。 - joonasj

3
EditText ed;
ed.setInputType(InputType.TYPE_CLASS_NUMBER);

还有文档可能会有所帮助。


1
我不想使用数字,因为这样我就无法使用小数点。 - joonasj
尝试使用InputFilter:http://developer.android.com/reference/android/text/InputFilter.html,将其应用于CustomEditText:customEditText.setFilter(yourInputFilter); - Andrew F

1
根据Android文档,TYPE_NUMBER_FLAG_DECIMAL应该可以使用http://developer.android.com/reference/android/text/InputType.html。然而,如果仅使用TYPE_NUMBER_FLAG_DECIMAL,用户也能输入字母。幸运的是,Haresh Chaudhary提供了正确的答案,必须同时使用TYPE_CLASS_NUMBERTYPE_NUMBER_FLAG_DECIMAL。我尝试了他的解决方案,它起作用了。虽然我使用了setInputType而不是setRawInput:
yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

0

你尝试过 customEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER) 吗?

参考:InputType


1
我不想使用数字,因为这样我就无法使用小数点。 - joonasj
你正在测试哪个版本的安卓系统?DigitsKeyListener.getInstance("0123456789,") 在我使用的2.3、4.0和4.1版本上都能正常工作。 - Aswin Kumar
Galaxy S 2.3.3 和 Galaxy Nexus 4.0.3。 - joonasj

-1
尝试在xml布局中的EditText中添加android:inputType="number"link)。

这一次我不能这样做,因为代码的原因。我必须只使用Java来完成它。而且我想让我的edittext字段只接受0-9数字和小数逗号(,)。 - joonasj

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