Android 以编程方式设置编辑文本数字
我基本上是在尝试以编程方式设置EditText的数字值。到目前为止,我已经:Android 以编程方式设置编辑文本数字,android,android-edittext,Android,Android Edittext,我基本上是在尝试以编程方式设置EditText的数字值。到目前为止,我已经: weightInput.setInputType(InputType.TYPE_CLASS_PHONE); weightInput.setKeyListener(DigitsKeyListener.getInstance()); 这很好,但我也希望能够包含一个小数位(.)。有什么想法吗?试试这个: <EditText android:inputType="number" android:digi
weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
这很好,但我也希望能够包含一个小数位(.)。有什么想法吗?试试这个:
<EditText
android:inputType="number"
android:digits="0123456789."
/>
weightInput.setInputType(InputType.TYPE_CLASS_NUMBER);
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));
但是,它允许用户包含多个”
有关实数,请参见的答案。使用
InputType。键入\u NUMBER\u FLAG\u DECIMAL
另请参见:.了解IP地址输入(多个点和数字)
试一试
试试这个:
<EditText
android:inputType="number"
android:digits="0123456789."
/>
weightInput.setInputType(InputType.TYPE_CLASS_NUMBER);
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));
返回一个DigitsKeyListener,该侦听器接受数字0到9,加上减号(仅在开头)和/或小数点(每个字段仅一个),如果指定
这就解决了EditText中许多“.”的问题。如果还有人找到正确的方法,请注意它的
setRawInputType()
不是setInputType()
这很好,但我想按程序来做。这是因为我想在多种情况下重用一个布局,因为这个数字是唯一不断变化的变量。在我的情况下,用代码做会更有效。谢谢。事实上,我觉得这个答案值得打勾,因为它是我所要求的,但这两种解决方案都有效。@feresr,这很奇怪,因为查看
TextView
sources://如果没有指定输入类型,我们将默认为泛型文本,因为我们无法告诉IME所选的一组数字。
9之后的
有什么用?@MiteshShah它允许小数点。-1?我当然没有那样做。你的解决方案奏效了,谢谢。看来已经恢复了。很高兴提供帮助。请注意十六进制IP地址(以0x开头的部分)也是有效的,并且可以使用域名代替IP地址。只需添加一个说明:editText.setKeyListener(DigitKeyListener.getInstance(true,true));启用小数和负数。setKeyListener(DigitsKeyListener.getInstance(false,true));仅启用正小数。setKeyListener(DigitsKeyListener.getInstance(false,false));只启用正整数。问题:如果你一次又一次地setInputType
,它不会将第二个覆盖到第一个吗?我认为您应该使用weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL)
但我不是100%确定您可能更喜欢使用DialerKeyListener
而不是DigitsKeyListener
public static DigitsKeyListener getInstance (boolean sign, boolean decimal)
val digits = "ABCDabcd" // or any characters you want to allow
editText.keyListener = DigitsKeyListener.getInstance(digits)
editText.setRawInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME)