我在Android(4.4)的最后一次更新时面临一个奇怪的问题:我的CSS渲染在用户的屏幕上可见,这意味着我的webview内容非常薄,然后才能适应宽度:100%的CSS
我使用android.webkit.WebView来显示如下的html字符串:
webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
此webview具有以下尺寸集:
构建CSS以适应webview宽度,然后高度将自行调整。 css中没有设置绝对宽度或高度。
当我显示我的webview(已经完全加载,因为我使用onPageFinished回调以了解加载已完成)时,CSS开始呈现。这让我感到惊讶,因为我认为在加载webview时应该渲染它。 问题是,对于用户来说,会显示一条非常小的白线,然后此线会自行调整以匹配webview设置。
如果我在CSS中修复宽度,我没有任何渲染问题。但我不能这样做,因为我想匹配所有屏幕尺寸。
在Android 4.4之前没有问题,因为在CSS完全呈现之前屏幕上没有显示任何内容。
顺便说一下,我正在使用webview中的setPictureListener()方法。我知道这种方法已被弃用(暂时已过时),但这是了解webview何时真正完成在屏幕上“绘制”的唯一方法。如果我在Android 4.4中使用此方法,则会多次调用它,并且此错误在DDMS中出现:
W/UnimplementedWebViewApi(23891): Unimplemented WebView method run called from: android.os.Handler.handleCallback(Handler.java:733)
我不知道是否存在直接关系,我不认为即使不使用此方法,我的CSS也无法正确呈现。
我尝试了很多东西:
但没有任何效果。 看起来只有在webview对用户可见时才会呈现CSS。
我无法显示源代码,因为它是出于专业目的,因此我只想对不同的观点进行搜索(或者如果有人已经在DDMS中看到这个奇怪的错误)
有人知道如何在显示此webview之前等待CSS在webview中呈现吗?
非常感谢
答案 0 :(得分:1)
我设法解决了这个问题。
我的HTML主要div的样式中有一个display: table;
,删除它会使我的渲染看起来很好。
由于它与Android以前的版本配合得很好,我无法确定它是否是webview的错误,或者我的CSS中存在问题。
顺便说一下,谢谢你看看我的问题