Android 以编程方式设置编辑文本数字

Android 以编程方式设置编辑文本数字,android,android-edittext,Android,Android Edittext,我基本上是在尝试以编程方式设置EditText的数字值。到目前为止,我已经: weightInput.setInputType(InputType.TYPE_CLASS_PHONE); weightInput.setKeyListener(DigitsKeyListener.getInstance()); 这很好,但我也希望能够包含一个小数位(.)。有什么想法吗?试试这个: <EditText android:inputType="number" android:digi

我基本上是在尝试以编程方式设置EditText的数字值。到目前为止,我已经:

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)