以编程方式设置EditText数字

时间:2011-09-04 16:11:12

标签: android android-edittext

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

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

哪个好,但我也希望能够包含小数位(。)。有什么想法吗?

5 个答案:

答案 0 :(得分:165)

试试这个:

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

来自代码:

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

但是,它允许用户包含几个“。” 有关实数,请参阅JoeyRA的答案。

答案 1 :(得分:26)

试试这个:

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,加上减号(仅在开头)和/或小数点(每个字段只有一个),如果指定的话。

这解决了许多问题。&#39;在EditText中

答案 2 :(得分:20)

使用InputType.TYPE_NUMBER_FLAG_DECIMAL

另见:Input Types

答案 3 :(得分: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" />

答案 4 :(得分:0)

如果仍有人找到正确的方法,请注意其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)