【发布时间】:2016-01-06 23:50:09
【问题描述】:
我们有一个需要键盘的 webview。某些 Android 平台存在一个错误,导致键盘无法正常显示。因此,我需要手动显示键盘(即来自 Java)。
问题是因为这是一个 webview,我没有 EditText 对象来创建键盘。因此,作为一种解决方法,我想手动显示键盘并将键输入传递给 webview。
我可以显示键盘没问题,但我无法触摸到按键。
我阅读了intercepting onKeyDown events,但我无法让它工作。
我最好的尝试是这样的:
- 使用重写的
onKeyUp创建我的自定义 EditText 类 - 让 webview 调用这个原生方法并让自定义 EditText 类请求焦点
我的自定义 EditText (KeyboardText) 已创建,但 onKeyUp 未触发。你能告诉我如何准确地获得 onKeyUp 事件吗?
这是我用来拦截关键事件的自定义 EditText。
class KeyboardText extends EditText
{
public KeyboardText(Context context)
{
// THIS FIRES
super(context);
Log.d("", "Created KeyboardText");
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
// THIS DOES NOT FIRE
Log.d("","Got Key Up");
return true;
}
这里是我调用键盘的地方:
KeyboardText text = new KeyboardText(cordova.getActivity());
text.setFocusable(true);
text.setFocusableInTouchMode(true);
if (text.requestFocus())
{
Log.d("", "Success");
InputMethodManager manager = (InputMethodManager)cordova.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
manager.showSoftInput(text, InputMethodManager.SHOW_FORCED);
}
【问题讨论】:
标签: java android webview keyboard