我正在尝试确定何时从Android WebView聚焦html页面中的文本字段。一些注意事项:我没有网页,所以我无法直接在网页上添加任何内容。
我尝试过:
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void displayScanButton() {
WebViewActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("SCAN", "DISPLAY SCAN BUTTON");
toolbar.setVisibility(View.VISIBLE);
}
});
}
@JavascriptInterface
public void hideScanButton() {
WebViewActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("SCAN", "HIDE SCAN BUTTON");
toolbar.setVisibility(View.GONE);
}
});
}
}, "Android");
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:document.getElementById('tNewLabels').onfocus = Android.displayScanButton; document.getElementById('tNewLabels').onfocusout = Android.hideScanButton;");
}
我也有几种变体,但这就是我现在所拥有的。 它不为输入字段设置onfocus。
基本上我想要的是当用户点击输入字段输入文本时,我只显示我已经附加到键盘的工具栏。当用户不再具有输入字段的焦点时,隐藏工具栏。我认为会有一种方法,因为WebView知道何时打开键盘以及何时关闭它。可能是拦截这个的方法吗?
感谢您的帮助。
答案 0 :(得分:0)
试试这个:
document.getElementById('tNewLabels').onfocus = function() { Android.displayScanButton(); };
document.getElementById('tNewLabels').onfocusout = function() { Android.hideScanButton(); };
要使Android-Java桥工作,您的函数必须将接口对象作为“this”变量。将函数直接分配给事件会将其从对接口对象的附件中剥离。我听说它过去常常在旧版本的WebView中工作,但它不再适用。
抱歉恢复一个旧问题,你可能已经弄明白了。