在安卓系统的EditText中如何显示数字键盘?

154

当特定的EditText获得焦点时,我只是想切换到数字键盘模式。


4
这个问题并未明确表达想要更改允许的输入类型,只是询问如何更改键盘模式,这也是我想做到的,而不更改输入类型。所有的答案都解释了如何更改输入类型。 - AlanKley
请检查我在这个问题上的答案:http://stackoverflow.com/questions/39593324/cannot-resolve-symbol-showsoftinput/39593871#39593871 - Android Help
13个回答

276

您可以为您的 EditText 配置一个 inputType

<EditText android:inputType="number" ... />

6
请注意,您需要针对Android 1.5进行目标设置才能使用此功能(在1.1中不可用)。 - Wilka
4
问题在于你不能切换回文本输入。使用“数字|文本”也不行。似乎如果你想展示一个数字键盘,就不能允许它切换回文本。 - user4903
我同意Brian的观点。如果第一个字段是字母,下一个字段是数字,我无法使用“下一个”按钮进入下一个字段! - Ahmed Faisal
你能否返回取决于手机,我想。我的手机允许它。 - Martin Clemens Bloch
我想改变键盘类型为数字,并且我想要在编辑框中粘贴文本。如何操作? - ibyanik

114

在Java文件中完成此操作:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);

56

我发现这个实现很有用,它展示了一个更好的键盘并限制了输入字符。

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>

此外,您可以使用android:maxLength来限制数字的最大数量。

要以编程方式执行此操作:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);

有没有办法以编程的方式实现这个?我很想为我的EditText获取一个有限数量的键盘,但是它必须在活动中生成。 - Martin Erlic

19
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

将显示大数字键盘作为拨号器。


10

你可以有两种方式来做到这一点:

  1. 运行时设置

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
使用XML。
<EditText
    ...
    android:inputType="number" />

8

如果您需要小数,那么这就是适合您的答案:

android:inputType="numberDecimal"

5
如果您在对话框中使用EditText或动态创建EditText,无法从xml设置它,则此示例将帮助您设置该类型的键盘,同时使用动态EditText等。请参考以下示例:
myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

其中myEditTxt是动态EDIT TEXT对象的名称


4
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);

如果您正在手动格式化文本(例如货币),并且想要仅使用键盘进行控制,那么这是一个不错的选择。它不会过滤您的字符。谢谢! - lauksas
这对我来说非常有效。我想在字段尚未编辑时显示文本占位符值,但仍限制输入为数字并显示受限键盘。 - Alex Suzuki

4
在Java文件中使用以下代码:

editText.setRawInputType(Configuration.KEYBOARD_QWERTY);

该代码用于设置EditText输入的硬键盘类型为QWERTY。

你有最好的答案!!谢谢 - Chego

4
以下代码仅允许数字"0123456789",即使您意外键入了其他字符,编辑文本也不会接受。
    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));

你应该添加注释来解释你的代码以及为什么它是解决方案。 - cyroxis

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