WebView 使用Android 原生ToolBar

本文介绍了如何在WebView中使用Android原生ToolBar,解决隐藏H5标题栏并显示H5内容标题的问题。通过在onPageFinished方法中插入JS代码隐藏H5的标题栏,并利用js回调Java方法获取H5标题,设置到原生ToolBar上。
摘要由CSDN通过智能技术生成

WebView 使用Android 原生ToolBar

前言

在使用 WebView 加载 H5 页面的时候,很多H5页面会有自己的标题栏,然而原生APP中也会有自己的标题栏。很多应用为保证标题栏风格与原生应用统一,或者保证返回键的使用能自由控制,选择使用原生的 ToolBar 来作为页面的标题栏。

使用原生标题栏要解决的问题

  1. 为避免出现两个标题栏,需要隐藏H5自带的标题栏;
  2. 原生标题栏需要显示 H5 标题栏中的标题

1. 隐藏H5标题栏

以一个网页为例:

http://m.ly.com/interCarTouch/view/main.html?from=groupmessage#/pickupSearch?refid=500270222

这里写图片描述

通过分析这个网页的源码,我们可以看到网页的标题栏是一个 class 名为 fed-navbar 的div,内部包含一个返回箭头和一个 h1 标题”用车“。我们要做的,就是找到这个div,并且隐藏。

这里写图片描述

如上图,在Chrome浏览器中,我们,可以通过 document.getElementsByClassName(“fed-navbar”)[0] 方法来拿到class名为 fed-navbar 的元素,并且通过设置其 style.display=”none” 来隐藏该元素。

document.getElementsByClassName("fed-navbar")[0].style.display="none"

在Android中,无法直接调试H5,但是可以在 WebViewClient 的onPageFinished方法中,插入刚才的 js 代码,来实现同样的功能:

private class MyWebViewClient extends WebViewClient {
    //......
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);

        //定义hideTitle方法,隐藏H5标题栏
        String javascript =
                "javascript:function hideTitle() {"
                        + "var divNav = document.getElementsByClassName('fed-navbar')[0];"
                        + "divNav.style.display = 'none';"
                        + "}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值