如何动态获取WebView的高度
时间: 2023-09-07 07:12:14 浏览: 41
要动态获取WebView的高度,可以使用WebView的回调函数onSizeChanged()。
具体步骤如下:
1. 在WebView中设置WebChromeClient对象,重写onSizeChanged()方法。
2. 在onSizeChanged()方法中获取WebView的高度,然后可以根据需要进行相应的操作。
示例代码:
```
WebView webView = findViewById(R.id.web_view);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onSizeChanged(WebView view, int w, int h, int ow, int oh) {
// 获取WebView的高度
int webViewHeight = h;
// 根据需要进行相应的操作
// ...
}
});
```
相关问题
android获取webview高度
你可以使用 `WebView` 的 `getHeight()` 方法来获取 `WebView` 的高度。但是,这个方法只会返回 `WebView` 的布局高度,并不会包含 `WebView` 加载的内容的高度。
为了获取 `WebView` 加载的内容的高度,你需要在 `WebView` 加载完成后使用 `JavaScript` 来获取内容的高度,然后再将其传递给 `Android` 端。以下是一个示例代码:
```java
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 获取 WebView 内容的高度
view.evaluateJavascript("(function() { return document.body.scrollHeight; })();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// 将内容高度传递给 Android 端
int contentHeight = Integer.parseInt(value);
// do something with contentHeight
}
});
}
});
```
在上面的代码中,我们使用 `evaluateJavascript()` 方法来执行 `JavaScript` 代码,并在其中返回 `document.body.scrollHeight`,即内容的高度。然后,我们通过 `ValueCallback` 将内容的高度传递给 `Android` 端。
android获取webview内容高度
你可以通过以下代码获取 WebView 的内容高度:
```
WebView webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
int height = webView.getContentHeight();
// 这里的 height 即为 WebView 内容的高度
}
});
webView.loadUrl("http://www.example.com");
```
在 `onPageFinished` 方法中,我们可以获取 WebView 的内容高度。请注意,这个高度并不是 WebView 控件的高度,而是网页内容的实际高度。如果你想要设置 WebView 的高度,需要根据内容高度来进行计算和设置。