以编程方式设置EditText数字

rya*_*dlf 79 android android-edittext

我本质上是尝试以编程方式设置EditText的数字值.到目前为止,我有:

weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
Run Code Online (Sandbox Code Playgroud)

这很好,但我也希望能够包含小数位(.).有任何想法吗?

Whi*_*ler 182

试试这个:

<EditText
    android:inputType="number"
    android:digits="0123456789."
/>
Run Code Online (Sandbox Code Playgroud)

来自代码:

weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
Run Code Online (Sandbox Code Playgroud)

但是,它允许用户包含几个"." 请参阅JoeyRA对实数的回答.

  • 谢谢.我实际上觉得这个答案值得勾选,因为它特定于我的要求,但两种解决方案都有效. (2认同)

小智 29

试试这个:

weightInput.setInputType(InputType.TYPE_CLASS_NUMBER);          
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);           
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));
Run Code Online (Sandbox Code Playgroud)
public static DigitsKeyListener getInstance (boolean sign, boolean decimal) 
Run Code Online (Sandbox Code Playgroud)

返回一个DigitsKeyListener,它接受数字0到9,加上减号(仅在开头)和/或小数点(每个字段只有一个),如果指定的话.

这解决了很多'''的问题.在EditText中

  • 问题:如果你一次又一次`setInputType`,它不会覆盖第二个到第一个吗?我认为你应该使用`weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);`但我不是100%肯定 (8认同)

Ric*_*cky 20

使用InputType.TYPE_NUMBER_FLAG_DECIMAL.

另请参阅:输入类型.


Asa*_*sad 5

如果有人仍然找到正确的方法,请注意它setRawInputType()不是setInputType()

val digits = "ABCDabcd" // or any characters you want to allow
editText.keyListener = DigitsKeyListener.getInstance(digits) 
editText.setRawInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME)
Run Code Online (Sandbox Code Playgroud)