这里说的是网页内编辑框调起的输入法。网上搜了下都不大行。我的需求是点击ok收起键盘,搜了很多文章无效或者不好用
不行的方法包括
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
return super.dispatchKeyEvent(event);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev);
}
由于不存在EditText
.setOnEditorActionListener()
也是不可用
有效方法1重写webview和安卓沟通输入法桥梁 Webview onCreateInputConnection
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
// 需要保留原系统键盘原来的逻辑
return super.onCreateInputConnection(outAttrs);
}
不好用,虽然可以监听到事件和文本输入,影响删除等按键键盘本身逻辑
不侵入的方式。
webview.loadUrl("javascript:(function() {"
+ "window.addEventListener('keyup',function(e){console.log('keyup-'+e.keyCode);});"
+ "})()"
);
private WebChromeClient webChromeClient = new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
log("WebView ConsoleMessage:" + consoleMessage.message());
// 监听ok键收起键盘
if ("keyup-13".equals(consoleMessage.message())) {
hideSoftKeyboard();
}
return true;
}
};
webview.setWebChromeClient(webChromeClient);
ConsoleMessage回调只是其中一种,想用别的通信方式也行。这种最简单。点按键看返回什么数字。判断即可