Я хочу сфокусироваться на текстовом поле, потому что, когда я щелкаю текстовое поле, его блокирует экранная клавиатура Android, и для того, чтобы текстовое поле было видимым, пользователь должен прокручивать в основном вверх. Могу ли я сделать все это на Android или есть способ JavaScript
динамически установить фокус на текстовом поле?
То, что я сделал, это поместил поля в rootView WebView
и отступы в WebView
, но он все равно не привел WebView
в область, которая видна пользователю. Он просто обрезает боковые стороны веб-просмотра и не помещается на странице по текущему размеру WebView
.
Я также пытался использовать setInitialScale()
, но это влияет только на новый loadUrl()
, но в моем случае все происходит на одной странице.
Я также пытался использовать scrollTo()
, но поскольку на одной из моих страниц с текстовым полем не было прокрутки, она также не работала. Я знаю, что в приложении Chrome есть какая-то особенность, заключающаяся в том, что при уменьшении масштаба нажатие на текстовое поле фокусирует его, увеличивая его.
InputMethodManager imm = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isAcceptingText()) {
Log.d(TAG, "Software Keyboard was shown");
if(!isKeyboardShownRecently){
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) swiLyt.getLayoutParams();
//lp.setMargins( 50, 0, 50, 50);
webView.setPadding(0, 0, 0, heightDiff);
swiLyt.setLayoutParams(lp);
webView.getSettings().setBuiltInZoomControls(true);
webView.setInitialScale(150);
isKeyboardShownRecently = true;
}
} else {
Log.d(TAG, "Software Keyboard was not shown");
if (isKeyboardShownRecently){
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) swiLyt.getLayoutParams();
//lp.setMargins( 0, 0, 0, 0);
swiLyt.setLayoutParams(lp);
isKeyboardShownRecently = false;
}
}