#android #android-webview #android-softkeyboard
#Android #android-webview #android-программная клавиатура
Вопрос:
Я попробовал исправить, добавив webview.requestFocus(View.FOCUS_DOWN);
и сенсорный прослушиватель. Это работает только в первый раз. Когда я перехожу к какому-либо другому фрагменту и возвращаюсь к webview, клавиатура не открывается при нажатии на поле ввода. Тем не менее, я вижу, как мигает курсор. Мой webview является частью представления recycler и помещается в его держатель представления.
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;
}
});
Ответ №1:
Пожалуйста, добавьте эти строки в свой webview
android:focusable="true"
android:focusableInTouchMode="true"