【问题标题】:Hide Android soft keyboard and only allow digits on EditText隐藏 Android 软键盘,只允许 EditText 上的数字
【发布时间】:2015-03-03 13:01:13
【问题描述】:

我有一个自定义键盘,不想显示 Android 软键盘。这可以通过以下代码(How to hide Android soft keyboard on EditText)来实现:

editText.setInputType(InputType.TYPE_NULL);

但是 EditText 应该只允许数字。这可以通过以下方式实现:

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

我似乎找不到将这两种功能结合起来的方法。将 inputtype 设置为 TYPE_NULL 将在使用硬件键盘时允许使用非数字字符并将 inputtype 设置为 TYPE_CLASS_NUMBER 会导致弹出软键盘。

【问题讨论】:

  • 这段代码可以帮助你input.setRawInputType(Configuration.KEYBOARD_12KEY);
  • 我试过了,但它仍然在手机上显示 android 软键盘。

标签: android android-edittext android-softkeyboard custom-keyboard android-inputtype


【解决方案1】:

airowe 的回答引导我朝着正确的方向前进。此解决方案似乎不适用于 Android 2.3.X 设备(仍会弹出软键盘)。所以我稍微调整了一下。 我最终使用了以下代码:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); //hide keyboard

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
   editText.setInputType(InputType.TYPE_CLASS_NUMBER);
}
else
{
   editText.setRawInputType(InputType.TYPE_NULL);
}

这可能会允许预蜂窝平板电脑输入文本。但是我认为这可以忽略不计。

【讨论】:

    【解决方案2】:

    代替

    editText.setInputType(InputType.TYPE_NULL);
    

    使用

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(fieldController.getFieldComponent().getWindowToken(), 0); //hide keyboard
    

    隐藏键盘。

    然后,您可以将输入类型设置为您想要的。

    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 2014-08-07
      • 2014-12-13
      • 1970-01-01
      • 2013-12-06
      相关资源
      最近更新 更多