gpt4 book ai didi

Android WebView getContentHeight() 总是返回 0

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:47:09 38 4
gpt4 key购买 nike

我正在实现一个 WebView,以便它可以根据内容高度调整其高度。我尝试执行以下操作:

WebView view = new WebView(context);
view.loadData(htmlString, "text/html", "utf-8");

view.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("2", view.getContentheight() + "");
// Set the height of the webview to view.getContentHeight() here?
}
});

Log.d("1", view.getContentHeight() + "");

其中 htmlString 是 HTML 格式的字符串。

但是两个Log都返回0。

我不确定我做的是否正确。我如何知道内容高度然后相应地设置 WebView 的高度?

最佳答案

这是因为 onPageFinished 回调意味着 WebView 已完成从网络读取字节,仅此而已。在 onPageFinished 被触发时,页面可能还没有被解析。

如果你的 webview 的高度设置为 wrap_contents 那么你可以这样做:

WebView v = new WebView() {
@Override
public void onSizeChanged(int w, int h, int ow, int oh) {
super.onSizeChanged(w, h, ow, oh); // don't forget this or things will break!
Log.d(TAG, "WebView height" + getContentHeight());
}
};

如果您的 webview 不是 wrap_contents,那么一种选择是执行 josedlujan 在 his answer 中建议的操作回答这个问题并从 JavaScript 获取高度。

另一种选择是使用已弃用的 PictureListener:

webview.setPictureListener(new PictureListener() {
int previousHeight;
@Override
public void onNewPicture(WebView w, Picture p) {
int height = w.getContentHeight();
if (previousHeight == height) return;
previousHeight = height;
Log.d(TAG, "WebView height" + height);
}
});

关于Android WebView getContentHeight() 总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23093513/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com