我希望能够在数字模式下使用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打开软键盘的麻烦在于它是一个“通用”命令,即它没有专门与输入绑定。因此,软键盘以其默认模式打开,而不考虑其键盘将被发送的元素。