当软键盘处于活动状态时,如何在Web视图中显示文本框?

时间:2019-01-26 05:10:30

标签: android webview android-constraintlayout

我想把重点放在文本框上,因为当我单击一个文本框时,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;
    }

}

0 个答案:

没有答案