android - 键盘没有为 WebView 打开
问题描述
我已经通过添加webview.requestFocus(View.FOCUS_DOWN);
和触摸监听器尝试了修复。它仅适用于第一次。当我导航到其他片段并返回 webview 时,单击输入字段时键盘未打开。尽管如此,我仍然可以看到光标闪烁。我的 webview 是回收器视图的一部分,并放在其视图持有者内。
wv_svg.setWebChromeClient(new WebChromeClient());
wv_svg.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
});
wv_svg.setFocusable(true);
wv_svg.setFocusableInTouchMode(true);
wv_svg.setClickable(true);
WebSettings settings = wv_svg.getSettings();
settings.setBuiltInZoomControls(true);
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setSupportZoom(true);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
wv_svg.clearHistory();
wv_svg.addJavascriptInterface(new WebAppInterface(context), "Android");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
wv_svg.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
wv_svg.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
wv_svg.loadUrl(url);
wv_svg.requestFocus(View.FOCUS_DOWN);
wv_svg.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
v.requestFocus();
break;
}
return false;
}
});
解决方案
请将这些行添加到您的 webview
android:focusable="true"
android:focusableInTouchMode="true"
推荐阅读
- python - 如何为 pandas 数据框中的不同组分配唯一 ID?
- iteration - gnuplot:从同一输出上的不同数据文件创建多个箱线图
- c++ - 如何解决“错误:对‘abs’的调用不明确”
- php - 如何让 SimpleSAMLphp 1.17.2 让用户退出我的网站?它在 SSP 1.16.3 中工作
- django - 如何更新通用类视图?
- php - Uncaught SyntaxError:
- flutter - 有没有在 Dart/Flutter 中打开应用程序时只调用一次的方法?
- ubuntu - curl --cacert 在 7.47.0 和 7.58.0 之间的自签名证书上发生了什么?
- javascript - 根据学分计算费用
- android - 为什么我收到 java.lang.UnsupportedOperationException:类重新定义失败:尝试添加方法