EditText inputType属性似乎工作不正常

时间:2016-03-11 04:59:16

标签: android android-edittext android-inputtype

当我将inputType属性设置为number(android:inputType =" number")并设置数字属性时,如此 android:digits =" 0123456789" 即可。输入事件按预期正常工作。那只是输入数字。Refer the screenshot

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:ems="10"
        android:id="@+id/editText"
        android:digits="0123456789"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="68dp" />

</LinearLayout>

当我将inputType属性设置为textPersonName(android:inputType =&#34; textPersonName&#34;)并设置数字属性时,如此 android:digits =&#34; 0123456789&#34; 即可。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent">
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editText"
            android:digits="0123456789"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="68dp" />

    </LinearLayout>

输入事件未按预期正常工作。也就是说,

  • 当我输入1时,EditText显示1。
  • 当我继续输入b时,EditText显示112。
  • 当我继续用3键入时,EditText显示112123。
  • 当我继续用4键入时,EditText显示1121231121231234。 Refer the screenshot

这是什么原因?

3 个答案:

答案 0 :(得分:0)

您可以在edittext中为特定字符使用输入过滤器,您只能允许显示该字符。

从这个链接检查我的答案:

How do I use InputFilter to limit characters in an EditText in Android?

一旦看起来像设备特定问题,请尝试此操作。

答案 1 :(得分:0)

带有文字输入类型的数字是无效的组合。数字表示将采用数字类型。

对于奇怪的输入 - 我的猜测是键盘和编辑文本之间关于文本完成状态应该是什么的误解。当编辑文本试图覆盖我正在键入的内容时,我在编写键盘时看到了类似的错误 - 它导致文本完成被提交,因为它看起来像光标移动了。 Android键盘API确实需要进行大修。

答案 2 :(得分:0)

android:digits="0123456789"

这个属性实际上是做什么的?

您指定为android:inputType的输入类型无关紧要。只关注这个EditText将接受的数字才重要。如果设置为,则指定它具有数字输入方法,并且这些特定字符是它将接受的字符(0-9)。和数字暗示是真的。默认值为false

因此,如果您希望不发生这种情况,请删除此行。