Android Webview onLoad返回错误的高度

Android Webview onLoad returns wrong height

本文关键字:高度 错误 返回 Webview onLoad Android      更新时间:2023-09-26

我正在将一个文件://url加载到web视图中。由于我的webview需要展开/折叠,所以我没有使用WRAP_CONTENT,而是在android中的javascript onPageFinished事件中计算高度。但每5次中就有2次javascript报告错误的高度。对于一些手机,它返回的高度更大,而对于较旧的低分辨率手机,它会返回比容器更小的高度。

我试过使用window.onload。为了在前面保持理智,我必须在1500ms后执行setTimeout()来重新计算高度并调整webview容器的大小。

我缺了什么吗?如何着手修理它?

尝试依赖Android WebView,而不是在HTML窗口中

Html窗口(在JavaScript运行时执行)是320x240或正确大小的

如果您无法直接访问您的WebView大小,请暂停相关的JavaScript,直到HTML窗口调整大小

使用HTML窗口加载SDK视频覆盖的示例代码

if (!isAndroid() || isAndroidAndResized()) {
    this.translateRelativePosition(params);
    loadVideo(params.id, params.url, params);
} else {
    var relativePosition = {left: params.left, top: params.top};
    var offScreenPosition = {
        left: params.left - params.width - 2000,
        top: params.top - params.height - 2000
    }; // preload video without showing splash overlay at (0, 0)
    params.left = offScreenPosition.left;
    params.top = offScreenPosition.top;
    loadVideo(params.id, params.url, params);
    var positionCachedVideo = function () {
        if (isAndroidAndResized() || Ad.width === 320 && Ad.height === 240) {
            params.left = relativePosition.left;
            params.top = relativePosition.top;
            this.translateRelativePosition(params); // use container absolute position + video relative position (for device overlay)
            playVideo(params.id, params);
        } // make sure WebView is not 320x240 unless Ad size is 320x240
    }.bind(this);
    if (this.getWidth() !== 320 || this.getHeight() !== 240) {
        targetHtmlWindow.addEventListener('resize', positionCachedVideo);
    } else {
        setTimeout(positionCachedVideo, 50);
    }
}