当前位置: 首页 > 知识库问答 >
问题:

EditText inputType属性似乎工作不正确

靳举
2023-03-14

当我将输入类型属性设置为数字(Android:输入类型=“数字”)并设置数字属性时,就像这个Android:数字=“0123456789”。输入事件按预期正常工作。即仅以数字形式接收输入。参考屏幕截图

<?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属性设置为text person name(Android:input type = " text person name ")并像这样设置digits属性android:digits="0123456789 "。

<?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。请参阅屏幕截图

这是什么原因呢?

共有3个答案

邵诚
2023-03-14
android:digits="0123456789"

这个属性到底是做什么的?

无论你指定什么输入类型为< code>android:inputType都没关系。唯一重要的是这个< code>EditText将接受哪些数字。如果您这样设置,它指定这个有一个数字输入方法,并且这些特定的字符是它将接受的字符,在您的情况下是(0-9)。并且numeric被暗示为真。默认值为< code>false。

因此,如果你不想发生这种情况,你应该删除这条线。

蒙化
2023-03-14

带有文本输入类型的数字是无效的组合。digits表示将假定数字类型。

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

狄溪叠
2023-03-14

您可以对编辑文本中特定字符使用输入过滤器,您可以只允许您想要显示的字符。

点击此链接查看我的回答:

如何使用输入过滤器来限制Android版编辑文本中的字符?

一旦看起来像是设备特定的问题,就尝试这样做。

 类似资料:
  • 这是我第一次涉足AES加密和OpenSSL。我设法得到了一些加密和解密的例子,但它们似乎无法正常工作。例如,在加密函数中: 这将生成一个真正的“加密”文件,它还不错,但并不完全是它应该的样子(或者我认为是这样)。如果我从openssl运行cli命令来加密同一个文件,我会得到一个文本文件,其中写有加密的字符串。我的函数生成的是一个文件,不是文本(实际上它说它是未知格式)。 第二个,解密: 在这个函数

  • 问题内容: 我正在尝试通过检查golang TCPConn.Write返回的错误来检测发送失败,但它为nil。我也尝试使用TCPConn.SetWriteDeadline,但没有成功。 事情就是这样发生的: 服务器启动 客户端连接 服务器发送一条消息,客户端收到它 客户端 关闭 服务器再发送一条消息:没有错误 服务器发送第三条消息:仅现在出现错误 问题 :为什么只有第二条消息发送给不存在的客户端会

  • 请注意:虽然我在这个问题中提到了ShadowJar插件,但它只是为了提供完整的上下文。我相信任何一位毕业生大师都能回答这个问题,不管他们对ShadowJar的知识水平如何。 目前,我的Groovy项目是使用以下Gradle构建调用构建的: Gradle干净构建阴影罐 运行此调用将在我的gradle中指定的版本属性下生成一个打包的fat jar。属性文件。例如,if。 然而,它没有为我的应用程序生成

  • 我试图将JMX与activeMQ一起用于监控。到目前为止,我一直将其作为参考,但到目前为止我无法远程连接到JMX,而且我在activeMQ日志中没有看到任何提到JMX url的内容。我想知道是否有其他方法来确保jmx工作正常?它应该在activemq日志中显示吗?PS我正在使用jdk1.7和activeMQ 5.14.2。 提前感谢! 编辑 我在activemq.xml文件中设置了useJmx="

  • 我对nodeJS…和编程是新手。但我试图让这段代码工作,我无法理解为什么它似乎不起作用。更糟糕的是,我也不知道如何排除故障。如果我使用控制台。日志语句,我可以看到,一旦我启动网页,它就会连接,但网页从未从nodeJS服务器收到消息,服务器也从未从网页收到消息。我正在使用Chrome浏览器。 服务器.js: 我从命令提示符在树莓pi zero w上启动它: index.html引用interface

  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?