宽度:CSS中的100%在Android 4.4中无法很好地呈现

时间:2013-11-06 11:15:22

标签: android css webview android-webview android-4.4-kitkat

我在Android(4.4)的最后一次更新时面临一个奇怪的问题:我的CSS渲染在用户的屏幕上可见,这意味着我的webview内容非常薄,然后才能适应宽度:100%的CSS

我使用android.webkit.WebView来显示如下的html字符串:

webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);

此webview具有以下尺寸集:

  • 网页宽度的屏幕宽度的90%
  • 用于webview身高的WRAP_CONTENT

构建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也无法正确呈现。

我尝试了很多东西:

  • 使用javascript onload使身体可见
  • 在网页浏览中使用Chrome客户端并等待进度达到100%以显示我的网页视图
  • 使用webview客户端并等待onPageFinished使我的webview可见
  • 使用PictureListener使我的网页视图可见时,使用500毫秒的post延迟
  • 使用所有图层类型选项:HARDWARE / SOFTWARE / NONE
  • 首先让我的webview父母看不见/ GONE然后VISIBLE

但没有任何效果。 看起来只有在webview对用户可见时才会呈现CSS。

我无法显示源代码,因为它是出于专业目的,因此我只想对不同的观点进行搜索(或者如果有人已经在DDMS中看到这个奇怪的错误)

有人知道如何在显示此webview之前等待CSS在webview中呈现吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

我设法解决了这个问题。

我的HTML主要div的样式中有一个display: table;,删除它会使我的渲染看起来很好。

由于它与Android以前的版本配合得很好,我无法确定它是否是webview的错误,或者我的CSS中存在问题。

顺便说一下,谢谢你看看我的问题