Android WebView和AgentWebview不刷新页面不闪屏隐藏头部或者某个标签

现在全局搜索需要加入这个功能,然而返回的地址却是带有头部百度和搜索框的,这些本来是可以通过tradeid进行客制化去掉,但是百度没抽出人来做,所以需要自己处理。
如果我们在webview中的WebViewClient里的OnPageFinished方法中做的话会出现闪屏,而且调用时机也可能会延迟,造成打开页面后隔了几秒才隐藏网页头部,显然不是我们要的效果,而OnPageStarted方法调用隐藏也没用。后面找到WebChromeClient的onProgressChanged进行处理

setWebChromeClient(new WebChromeClient() {

                    @Override
                    public void onReceivedTitle(WebView view, String title) {
                        super.onReceivedTitle(view, title);
                    }

                    @Override
                    public void onProgressChanged(WebView view, int newProgress) {
                        super.onProgressChanged(view, newProgress);
                        hideHeader(view, "");
                    }
                })

比如在Agentweb中:

 AgentWeb.with(this).setAgentWebParent(mLL, new LinearLayout.LayoutParams(-1, -1))
                .useDefaultIndicator().setWebViewClient(new WebViewClient() {

                    @Override
                    public void onPageStarted(WebView view, String url, Bitmap favicon) {
                        super.onPageStarted(view, url, favicon);
                    }

                    @Override
                    public void onPageFinished(WebView view, String url) {
                        super.onPageFinished(view, url);
                    }
                }).setWebChromeClient(new WebChromeClient() {

                    @Override
                    public void onReceivedTitle(WebView view, String title) {
                        super.onReceivedTitle(view, title);
                    }

                    @Override
                    public void onProgressChanged(WebView view, int newProgress) {
                        super.onProgressChanged(view, newProgress);
                        hideHeader(view, "");
                    }
                }).createAgentWeb().ready().go(videoUrl + getKeyword());

附上我这的js隐藏头部的代码:

    private void hideHeader(WebView view, String url) {
        String javascript = "javascript:function hideHeader() { "
                + "console.log('head.........................:', document.head);\n" +
                "var new_element = document.createElement(\"style\");\n" +
                "new_element.innerHTML =(`.se-page-hd-content { display: none!important; }`);\n" +
                "document.head.appendChild(new_element);"
                + "}";
        view.loadUrl(javascript);
        view.loadUrl("javascript:hideHeader();");
    }

即可在不闪屏刷新webview的情况下去掉头部,原生webview也一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值