安卓EditText - 仅输入数字

4

我创建了一个只允许输入数字的EditText。它是一个非常简单的EditText,没有特别之处:

<EditText
        android:id="@+id/editTextAmount"
        android:layout_marginTop="10dp"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:background="@color/colorWhite"
        android:inputType="text"
        android:digits="0123456789"
        />

我在几个设备上尝试了它,结果如预期一样,我只能输入数字。问题出现在使用三星Galaxy Note S10+时(我认为问题来自于三星键盘)。当我聚焦EditText时,键盘打开(只能看到数字),但当我在字段中输入任何内容时,什么也不会发生。我可以按键盘上的任何键(enter键,数字等),但是没有任何变化。
我尝试在活动中以编程方式更改输入类型,我尝试通过修改输入类型(numberDecimal、numberSigned、both等)进行调整,但在任何情况下都不能正常工作。有趣的是,如果我将输入类型更改为"text"并取消数字限制,那么它就完美地运行。
我的问题是:如何在三星Galaxy Note S10+上限制EditText输入为数字?
编辑:为了使它完全清楚,我正在针对特定设备提出这个问题!我已经尝试过:
android:inputType="number"

并且

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

包括这些变量的任何变体(numberDecimal、numberSigned等)


很有趣,你说这个问题只出现在特定的设备上,所以我猜这不是一个重复的问题,当人们阅读这个问题时应该考虑这一点。 - a_local_nobody
@a_local_nobody 确实,已经有成千上万的帖子在问这个问题。我是一位经验丰富的安卓开发者,已经做过无数次了。我的问题确切地是针对这个设备(或其他三星设备?)。 - Anael
2个回答

4

在Java类中设置输入类型可以像这样

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

或者如果您想从布局中执行此操作,则设置

android:inputType="number"

1

这个配置似乎很好地运作:

android:digits="0123456789"
android:inputType="phone"

对我来说这是一个足够好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接