webview 获取html高度不准
时间: 2023-08-24 08:13:43 浏览: 197
在使用 WebView 加载 HTML 页面时,有时候会出现获取 HTML 页面高度不准确的情况。这通常是由于 WebView 加载 HTML 页面时需要一定时间,而获取高度的代码执行得太快,导致获取到的高度不准确。解决这个问题的方法有两种:
1. 使用 WebView 的 `WebViewClient` 监听页面加载完成事件,当页面加载完成后再获取高度。示例代码如下:
```java
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// 页面加载完成后再获取高度
int height = webView.getContentHeight();
// 处理高度值
}
});
```
2. 在 HTML 中添加 JavaScript 代码,在页面加载完成后调用 JavaScript 获取页面高度并将数据返回给 Android 代码。示例代码如下:
在 HTML 中添加以下 JavaScript 代码:
```javascript
<script type="text/javascript">
function onPageLoaded() {
var height = document.documentElement.scrollHeight;
window.android.onHtmlHeight(height);
}
window.onload = onPageLoaded;
</script>
```
在 Android 代码中添加以下方法:
```java
@JavascriptInterface
public void onHtmlHeight(int height) {
// 处理高度值
}
```
在 WebView 中启用 JavaScript 和 Native 交互:
```java
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(this, "android");
```
以上两种方法可以根据具体情况选择使用。
阅读全文