我希望能够在数字模式下使用 Javascript 打开 Android 软键盘。
有很多关于如何打开软键盘以及如何将其数据类型设置为数字的帖子,但在我的情况下,有一些情况阻止我组合这些解决方案。
目前,如果用户手动点击输入字段,数字软键盘会正确显示。我还想出了如何使用 java 方法 .addJavascriptInterface() 创建一个打开和关闭键盘的 Javascript 函数。这主要在这段代码中:
public class KeyBoard {
private WebView mAppView;
private DroidGap mGap;
public KeyBoard(DroidGap gap, WebView view)
{
mAppView = view;
mGap = gap;
}
public void showKeyBoard() {
InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(mAppView, InputMethodManager.SHOW_IMPLICIT);
((InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(mAppView, 0);
}
public void hideKeyBoard() {
InputMethodManager mgr = (InputMethodManager) mGap.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(mAppView.getWindowToken(), 0);
}
}
问题是当我使用这个自定义的 Javascript-to-Java 命令时,键盘总是显示为 Qwerty,即使该字段的当前值已经是数字并且它具有 type=number 标记。
我试过这些: - 在输入元素上设置 type=number 属性。- 始终准备好数值(在调用软键盘之前将值设置为零) - 在调用软键盘之前将焦点设置在输入上(并选择其值) - 我已阅读有关设置 TextView/EditText 属性的解决方案,但由于我的应用程序是浏览器应用程序,我可以操作的唯一 Android 对象是 WebView。- 目前无法在 Android 上设置 Java WebView 的默认输入法。
使用 Javascript-to-Java 打开软键盘的问题在于它是一个“通用”命令,即它与输入无关。因此,软键盘以其默认模式打开,而不考虑将发送其击键的元素。