Android WebView 获取html页面聚焦input在页面的位置

Android WebView 获取html页面聚焦input在页面的位置,实现代码如下:

@SuppressLint("SetJavaScriptEnabled")
    private void HTMLFocusLocation(Context context) {
        String js = "(function () {" +
                "var activeElement = document.activeElement;" +
                "var rect = activeElement.getBoundingClientRect();" +
                "return {'left': rect.left, 'top': rect.top, 'width': rect.width, 'height': rect.height}" +  // 返回json对象
                "})();";
        // 设置支持 javaScript
        mWebView.getSettings().setJavaScriptEnabled(true);
        // 执行js获取聚焦位置的坐标
        mWebView.evaluateJavascript(js, new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                Log.d(TAG, "onReceiveValue: " + value);
                try {
                    JSONObject object = new JSONObject(value);
                    double left = object.optDouble("left");
                    double top = object.optDouble("top");
                    double width = object.optDouble("width");
                    double height = object.optDouble("height");
                    Log.d(TAG, "onReceiveValue left: " + left + ", top: " + top + ", width: " + width + ", height: " + height);

                    // 返回的数据是dp, 用的时候需要转换成像素px
                    float density = context.getResources().getDisplayMetrics().density;
                    Log.d(TAG, "onReceiveValue density: " + density);

                    int leftPixel = (int) (left * density);
                    int topPixel = (int) (top * density);
                    int widthPixel = (int) (width * density);
                    int heightPixel = (int) (height * density);
                    Log.d(TAG, "onReceiveValue left: " + leftPixel + ", top: " + topPixel + ", width: " + widthPixel + ", height: " + heightPixel);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
    }

注意:

  • WebView 要设置setJavaScriptEnabled支持JavaScript调用
  • 返回的数值是以dp为单位,使用时需要转换为像素px
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值