我想要通过编程的方式设置EditText的数字值。目前我已经做了以下尝试:
weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
这很好,但我也想能够包括一个小数点(.)。有什么想法吗?
我想要通过编程的方式设置EditText的数字值。目前我已经做了以下尝试:
weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
这很好,但我也想能够包括一个小数点(.)。有什么想法吗?
试试这个:
<EditText
android:inputType="number"
android:digits="0123456789."
/>
从代码中:
weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
然而,它允许用户包含多个“.”
请参考JoeyRA的答案获取实数。TextView
源代码:// 如果没有指定输入类型,我们将默认为通用文本,因为我们无法告诉 IME 所选数字集合。
- Dmitry GryazinsetKeyListener
将限制软件键盘上仅使用数字(而非字母)。在模拟器的硬件键盘上可以正常工作。 - CoolMind试一下:
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));
public static DigitsKeyListener getInstance (boolean sign, boolean decimal)
返回接受数字0到9的DigitsKeyListener,加上减号(仅在开头)和/或小数点(每个字段仅限一个),如果指定了的话。
这解决了EditText中有许多“.” 的问题。setInputType
方法,会不会覆盖第二个设置到第一个上面?我认为你应该使用weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
,但是我不确定100%。 - Rafael Ruiz Muñoz使用InputType.TYPE_NUMBER_FLAG_DECIMAL
。
另请参阅:输入类型。
如果还有人在寻找适当的方法,请注意它是 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)
<EditText
android:id="@+id/ipBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/ipAddrHint"
android:inputType="numberDecimal|number"
android:digits="0123456789."
android:textSize="30sp" />
以上解决方案都没有按预期起作用。XML 文件中的数字仍允许我在输入中输入“,”。 请检查一下,这个方法对我很有效:
edittext.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
DialerKeyListener
而不是DigitsKeyListener
。 - Dmitry Gryazin