如何在android的EditText上显示数字键盘?


146

我只是想基本上在某个EditText获得焦点后切换到数字键盘模式。


4
该问题没有具体说明更改允许的输入类型的愿望。它只是询问如何更改键盘模式,这是我想在不更改输入类型的情况下进行的操作。所有答案都说明了如何更改输入类型。
AlanKley13年

检查我对这个问题的回答stackoverflow.com/questions/39593324/...
Android说明

Answers:


261

您可以inputType为您配置一个EditText

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

6
还要注意,您需要将Android 1.5定位为使用该版本(1.1中不可用)
Wilka,

4
问题是您无法切换回去。使用“数字|文本”也不起作用。看来,如果要显示数字键盘,则不能允许它切换回文本。

我同意Brian的看法。如果第一个字段为字母,下一个字段为数字,则无法使用“下一个”按钮转到下一个字段!
艾哈迈德

您是否可以返回取决于我认为的电话。我的允许。
马丁·克莱门斯·布洛赫

我想更改键盘类型编号,并将文本粘贴到edittext中。怎么做?
易卜拉欣亚尼克

115

要在Java文件中执行此操作:

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

51

我发现此实现很有用,可以显示更好的键盘并限制输入字符。

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

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

以编程方式执行此操作:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

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

有什么办法以编程方式执行此操作吗?一直想为我的EditText设置一个有限数量的键盘,但是这种设置方式必须在活动中生成。
马丁·埃里克

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

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


11

你可以做到2种方式

  1. 运行时设置

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
  2. 使用XML

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

5

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

android:inputType="numberDecimal"

4

如果您在Dialog中使用EditText或动态创建,并且无法从xml进行设置,则本示例将在使用动态Edit Text等时帮助您设置键盘类型

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

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


2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);

如果您要手动设置文本格式(例如货币格式),而只想控制键盘,那是您的选择。不会过滤您的字符。谢谢!
lauksas

这对我来说就像是一种魅力。我想在尚未编辑字段时显示文本占位符值,但仍将输入限制为数字并显示受限的键盘。
Alex Suzuki


2

下面的代码将只允许数字“ 0123456789”,即使您不小心输入了“ 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

1

在Java文件中使用以下代码

editText.setRawInputType(Configuration.KEYBOARD_QWERTY);


0

在您的xml代码中定义

android:inputType="number"

0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);

如果您在布局xml代码中创建了EditText number1,那么如果要将“数字键盘”设置为number1 EditText,则可以使用Java代码来执行此操作。
Shiv Buyya
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.