以编程方式设置EditText数字


86

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

weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());

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


1
你可能会喜欢使用DialerKeyListener,而不是DigitsKeyListener
梅德Gryazin

Answers:


206

试试这个:

<EditText
    android:inputType="number"
    android:digits="0123456789."
/>

从代码:

weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));

但是,它允许用户包括多个“”。有关实际数字,请参见JoeyRA的答案。


很好,但我想以编程方式执行此操作。这样做的原因是因为我想在多种情况下重用一种布局,因为该数字是唯一不断变化的变量。在我的情况下,在代码中执行此操作更为有效。
ryandlf 2011年

2
谢谢。实际上,我觉得这个答案值得打勾,因为它针对我的要求,但是两种解决方案都可以。
ryandlf 2011年

@feresr,这很奇怪,因为查看TextView消息来源: // If no input type was specified, we will default to generic text, since we can't tell the IME about the set of digits that was selected.
Dmitry Gryazin

.9之后的用途是什么?
Mitesh Shah

1
@MiteshShah它允许小数位。
masterwok

30

试试这个:

weightInput.setInputType(InputType.TYPE_CLASS_NUMBER);          
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);           
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));

public static DigitsKeyListener getInstance (boolean sign, boolean decimal) 

返回一个DigitsKeyListener,它接受数字0到9,以及减号(仅在开头)和/或小数点(每个字段仅一个)(如果指定)。

这样就解决了很多“。”的问题。在EditText中


1
只需添加一个澄清:editText.setKeyListener(DigitsKeyListener.getInstance(true,true)); 启用小数和负数。editText.setKeyListener(DigitsKeyListener.getInstance(false,true)); 仅启用正小数。editText.setKeyListener(DigitsKeyListener.getInstance(false,false)); 仅启用正整数。
SerSánGal

8
问题:如果您setInputType一次又一次,它不会覆盖第二个到第一个吗?我认为您应该使用,weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);但我不是100%确定
Rafael RuizMuñoz16年


4

用于IP地址输入(多个点和数字)

尝试

<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" />

1
请注意,十六进制IP地址(部分以0x开头)也是有效的,并且可以使用域名代替IP地址。
Triang3l 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.