Я работаю над проектом Android, который загружает веб-страницу внутри компонента Webview.
Важно отметить, что у меня нет доступа к коду сайта.
Проблема заключается в следующем.
На веб-сайте есть форма с полем ввода текста со списком предложений. Когда пользователь вводит текстовое поле, автоматически появляется окно с предложением, и пользователь может выбрать элемент из списка.
Когда пользователь нажимает на текстовое поле, курсор фокусируется на нем и появляется клавиатура Android.
Когда пользователь выбирает элемент из списка предложений, текстовое поле теряет фокус и пропадает курсор на миллисекунды, но снова текстовое поле фокусируется, что означает, что курсор появляется внутри текстового поля, а ранее скрытая клавиатура появляется снова.
Вышеуказанное поведение приводит к плохому удобству использования.
Как реализовать скрытую клавиатуру после того, как пользователь выберет предложение?
Ниже приведен код для загрузки веб-представления.
private void loadSite(){
siteWebView = (WebView) findViewById(R.id.siteWebView);
siteWebView.loadUrl(IndexURL);
siteWebView.setWebViewClient(new SiteWebView());
WebSettings siteWebSettings = siteWebView.getSettings();
siteWebSettings.setJavaScriptEnabled(true);
siteWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
siteWebSettings.setDomStorageEnabled(true);
siteWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
siteWebSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
siteWebSettings.setUseWideViewPort(true);
siteWebSettings.setSavePassword(true);
siteWebSettings.setSaveFormData(true);
siteWebSettings.setEnableSmoothTransition(true);
siteWebSettings.setLoadWithOverviewMode(true);
siteWebSettings.setUseWideViewPort(true);
//Disabled horizontal scrolling and enabled zooming
siteWebView.setHorizontalScrollBarEnabled(false);
siteWebSettings.setBuiltInZoomControls(true);
siteWebSettings.setDisplayZoomControls(false);
siteWebView.setWebChromeClient(webChromeClient);
}