Android WebView 文本框获取焦点后自动放大的解决方案

 之所以出现这种情况,主要是当文本框获取到焦点后,键盘自动弹出,会执行WebView的displaySoftKeyboard 方法,这个方法会把缩小的网页恢复到正常情况(也就是说缩小的网页放大),但是我目前的项目都是不允许页面缩放的,所以一旦页面放大后就无法恢复。

webview.setOnFocusChangeListener(new View.OnFocusChangeListener() {  

            @Override  
            public void onFocusChange(View v, boolean hasFocus) {  
                if(hasFocus)  
                {  
                    try {  
                        Field defaultScale = WebView.class.getDeclaredField("mDefaultScale");  
                        defaultScale.setAccessible(true);  
                        //WebViewSettingUtil.getInitScaleValue(VideoNavigationActivity.this, false )/100.0f 是我的程序的一个方法,可以用float 的scale替代  
                        defaultScale.setFloat(webview, 1);  
                    } catch (SecurityException e) {  
                        e.printStackTrace();  
                    } catch (IllegalArgumentException e) {  
                        e.printStackTrace();  
                    } catch (IllegalAccessException e) {  
                        e.printStackTrace();  
                    } catch (NoSuchFieldException e) {  
                        e.printStackTrace();  
                    }   
                }  
            }  

        });  

利用java反射机制,setFloat方法比例我设置为1,就是保持不变。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
AndroidWebView中,可以通过以下代码获取到指定class的元素内容: ```java WebView webView = findViewById(R.id.webview); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // 获取 class="example" 的元素内容 webView.loadUrl("javascript:window.android.onElementContentLoaded(document.getElementsByClassName('example')[0].innerHTML)"); } }); // 添加 JavaScript 接口 webView.addJavascriptInterface(new Object() { @JavascriptInterface public void onElementContentLoaded(String content) { // 处理获取到的元素内容 Log.d("WebView", "Element content: " + content); } }, "android"); ``` 在这个例子中,我们首先设置了WebViewClient的onPageFinished方法,当网页加载完成后会自动调用此方法。在这个方法中,我们通过JavaScript代码获取到指定class的元素内容,并通过WebView的loadUrl方法将获取到的内容回传给Android应用程序。 最后,我们通过addJavascriptInterface方法将一个Java对象添加为JavaScript接口,这个接口中包含了onElementContentLoaded方法,用于处理获取到的元素内容。在JavaScript代码中,我们通过window.android.onElementContentLoaded方法将获取到的元素内容传递给这个接口方法。 需要注意的是,这种方式可能会受到网页结构和JavaScript代码的影响,需要根据实际情况进行调整。同时,这种方式也可能会涉及到隐私和安全问题,请谨慎使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值