安卓上的数字软键盘

13

我正在开发一款Android应用程序,其中使用WebView来显示从Web服务器提供的网页。除了一个问题外,一切都正常:当我使用软键盘并切换到数字键入时,移动到下一个字段时,键盘布局会自动更改为字母数字混合。

是否有办法只在需要输入数字时才以数字模式弹出虚拟键盘?

谢谢和问候。


当用户聚焦于一个输入类型为数字的网页编辑字段时,我们如何默认使用数字软键盘? - Shivaansh Gupta
4个回答

28
editTextField.setRawInputType(Configuration.KEYBOARD_QWERTY);

这显示了正常的键盘,带有数字版本优先,但允许您在它们之间切换。

getInput.setRawInputType(Configuration.KEYBOARD_12KEY);

这仅显示数字,没有输入文本值的选项。

我遇到了类似的情况。我只想要数值,但我有一个是文本的“提示”。将 inputType 设置为“number”将无法显示提示。这种方法可以很好地解决它。


5
你应该使用InputType.TYPE_CLASS_NUMBER代替Configuration.KEYBOARD_QWERTY,使用InputType.TYPE_CLASS_PHONE代替Configuration.KEYBOARD_12KEY。虽然它们具有相同的整数值,但我认为这些是正确的类型。请注意,这样做可以使输入更加准确。 - SteelBytes
user455451,我遇到了同样的问题,我尝试了你的方法。不幸的是,它没有起作用:如果我使用TYPE_CLASS_NUMBER(或Configuration.KEYBOARD_QWERTY - 代码相同),我会得到一个数字键盘,但无法切换到文本输入。也许问题出在Android系统上?我使用的是2.1版本。 - Mr.D
Configuration.KEYBOARD_QWERTY 常量是数字 2 - 与 TYPE_CLASS_NUMBER 相同。大多数软输入法不允许从数字模式切换到字母数字模式。即使其中一些软输入法可以 - 按字母键也没有效果。 - Michael P

2

1
将原始输入类型设置为TYPE_CLASS_NUMBER仍会将大多数软输入锁定在仅数字模式下。 - Michael P

1

如果你在谈论HTML,你可以使用HTML5的功能,例如:

Number: <input type="number" name="points" min="1" max="10" />

我已经在HTC Desire浏览器中进行了测试,并且当您输入此类字段中的数据时,它会弹出不同(数字)键盘。


是的,在许多情况下这应该是有效的。然而,如果您恰好在HTML5浏览器应用中使用jQueryMobile,type=number将不会触发数字键盘。 - Wytze
对于我的PhoneGap应用程序,指定type="number"只有在用户输入一个字符后才会弹出数字键盘。这个jQuery为我解决了这个问题(其中所有这样的输入都有一个pin类):$(".pin").live('tap', function() { $(this).focus(); }); - David Conlisk

0
有没有办法在只需要输入数字时,仅通过虚拟键盘以数字模式打开它?
是的,您可以使用android:inputType XML属性并指定numbernumberDecimal值:
<EditText 
android:text="" 
android:id="@+id/editTextNumber" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:inputType="numberDecimal">
</EditText>

祝您愉快!


1
嗨,Paresh。感谢您的回复。我们只在使用WebView时遇到了这个问题。 - Shivaansh Gupta
1
是的,这个问题涉及到webview输入字段。 - User

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