我有一个用 EmberJS 编写的网络应用程序,通过一个基本上只是一个Web视图的应用程序在Android设备上访问。该应用针对的是Android 4.1 / API 16级,我们受此限制。
有时,当使用软键盘上的“next”和“prev”键在字段之间导航时,软键盘将关闭,并且不会在下一个字段上重新打开。我们经常在将焦点从文本字段移动到选择字段时看到此问题,其中软键盘应该用选择对话框替换,但是只能从文本字段移动到文本字段。
如何更正此行为并使其成为一致的软键盘/选择对话框?以下是我已经根据我找到的其他堆栈溢出/开发博客尝试过的事项列表。
添加了一个触控侦听器,专注于Web视图。这没有明显的效果。
browser.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
我将以下内容添加到 AndroidManifest.xml ,但它只是导致视图端口无法移动到具有焦点的字段。
android:windowSoftInputMode="adjustNothing"
我写了一个接口方法,可以直接从JavaScript调用,试图显示软输入键盘。我们的测试人员已经说过这样可以提高可靠性,但是我们仍然会在选择下拉列表和文本输入字段之间出现问题。
爪哇
public void showSoftKeyboard() {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(browser, 0);
}
的JavaScript /灰烬
if (window.jsinterface) {
window.jsinterface.showSoftKeyboard();
}
任何帮助都非常感激。
更新
一些可能有用的附加信息,并试图使问题更清晰。
我们的客户使用Galaxy Note II作为在Android 4.1上运行的首选设备。我们的应用程序使用API级别16,因此我们被绑定到旧的Webkit Web View,而不是在4.4 / API级别19中推出的Chromium实现。