现在 Android 开发中用到 WebView 的地方越来越多,开发中经常会遇到 WebView 的坑,这里先转载二篇很好的文章,WebView 开发时如果遇到了问题可以先去这二篇文章里面看看。
WebView 开车指南 各个知识点讲的很详细,开车必备。
WebView 常见问题及解决方案汇总 如果碰到一些奇怪的问题,先看看这里。
闲话扯完,下面进入正题。
在 APP 中,根据 H5 页面的 Title 来动态显示我们 Toolbar 上的文字,这是一个很正常的需求。接到需求后,直接开撸。
姿势一:
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if (title != null) {
titleView.setCenterText(title);
}
}
});
简单测试了下,发现 titleView 内容是根据页面动态变化了,Nice!
然额,事情这么简单的话也就没必要写这篇博客了,上面的代码在我自己的 7.1 版本的系统上是没有问题的,但是在用低版本手机测试的时候就发现有问题了。
在有些低版本的手机上,首次加载页面的时候是正确获取到了 title,但是当 goback 返回之后发现 title 并没有自动的变回去,还是上一个页面的 title。这可如何是好,在网上找了找,找到了一个解决方案,试了下,发现可行,遂记录下来。
姿势二:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String title = view.getTitle();
if (!TextUtils.isEmpty(title)) {
titleView.setCenterText(title);
}
}
});
用上面的方法,在 goback 后都能够正确的拿到 title,所以获取 H5 页面 title 的正确姿势应该是姿势二。