我实际上是尝试以编程方式设置EditText的数字值。到目前为止,我有:
weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
哪个好,但我也希望能够包含小数位(。)。有什么想法吗?
答案 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)