为什么CLASS_TYPE_PHONE允许在Android中使用非手机字符?

时间:2016-12-23 14:05:27

标签: android android-edittext android-inputtype

我有一个包含EditText的自定义视图。使用我自己的自定义视图,我使用了这个:

mCustomView.setInputType(InputType.TYPE_CLASS_PHONE);

在自定义视图类中我们有:

public void setInputType(int mode){
    mSearchEditText.setInputType(mode);
}

但是,键盘有这些:

keyboard

我想要的只是数字和+符号。不 - ,没有N, - ,没有/。

2 个答案:

答案 0 :(得分:2)

大约有20亿台Android设备,来自数千种设备型号。这些将包含数十个(如果不是数百个)预安装的输入法编辑器(例如,软键盘)。还可以从Play商店和其他地方下载其他输入法编辑器。

InputType.TYPE_CLASS_PHONE是您对输入法编辑器的提示或请求。这不是一个命令。输入法编辑器的作用是响应InputType.TYPE_CLASS_PHONE取决于输入法编辑器的开发人员,而不是。而且,由于有许多不同的输入法编辑器,结果会因用户而异。

因此,对于这个特定的输入法编辑器,您将获得屏幕截图中显示的内容。虽然我不认识一些与电话有关的问题(N?),但大多数都经常使用电话号码(例如括号来分隔美国的区号)。无论如何,输入法编辑器的开发者选择的是选项,而不是你。

答案 1 :(得分:2)

设置输入类型只决定显示哪种键盘类型(默认)。要将输入限制为仅数字,请使用:

android:digits="0123456789"
<EditText>定义中的

注意:没有标准的Android键盘类型只显示数字!