我想把重点放在文本框上,因为当我单击一个文本框时,android的软键盘会阻止它,并使该文本框可见,用户需要主要向上滚动。我可以在android上完成所有操作,还是JavaScript
上有一种方法可以动态地将焦点设置在文本框中?
我所做的是在WebView
的rootView中留有边距,在WebView
中填充了空白,但仍然没有将WebView
带到用户可见的区域。它只会剪切Web视图的侧面,而无法使页面适合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;
}
}