【问题标题】:width:100% in CSS not rendering well in Android 4.4CSS 中的宽度:100% 在 Android 4.4 中无法很好地呈现
【发布时间】:2013-11-17 14:30:16
【问题描述】:

我在 Android (4.4) 的最后一次更新中遇到了一个奇怪的问题:我的 CSS 渲染在用户的屏幕上是可见的,这意味着我的 webview 内容在适应宽度之前非常薄:100% 的 CSS .

我正在使用 android.webkit.WebView 来显示这样的 html 字符串:

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

这个 webview 的尺寸设置如下:

  • 90% 的屏幕宽度用于 webview 宽度
  • 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 使正文可见
  • 在 webview 上使用 chrome 客户端并等待进度达到 100% 以使我的 webview 可见
  • 使用 webview 客户端并等待 onPageFinished 使我的 webview 可见
  • 使用 PictureListener 使我的 web 视图可见时使用 500 毫秒的 postDelayed
  • 使用所有图层类型选择:硬件/软件/无
  • 首先使我的 webview 父级不可见/消失,然后可见

但没有任何效果。 似乎只有当 webview 对用户可见时才会呈现 CSS。

我不能出于专业目的显示源代码,所以我只想对我可以搜索的位置有不同的看法(或者如果有人已经在 DDMS 中看到了这个奇怪的错误)

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

非常感谢

【问题讨论】:

  • 我没有答案,但我只是好奇:即使body 的子元素div 上的visibility: hidden 也不会强制布局在显示之前进行计算? ?
  • 您的意思是,在一个 div 上添加 visibility: hidden 并在 onload javascript 函数中将其删除?我只直接在身体上尝试过,而不是在孩子身上尝试过
  • 是的,我的意思是(我会尝试使用 div,因为如果 body 被隐藏,它可能会“优化”掉计算)但坦率地说,如果它在 body 上不起作用,我不会计算它'将在 div 上工作...
  • 我试过没有成功。我忘了提到的一件事是 webview 高度正在适应,所以我的细白线(这是我的 html 的背景)正在移动到 webview 的左上部分,而这个正在调整大小以包装内容。调整大小完成后,细白线消失,我看到我的内容就像在 Android 4.3 中一样

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


【解决方案1】:

我设法解决了这个问题。

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

由于它在 Android 以前的版本中运行良好,我无法确定这是 webview 的错误,还是我的 CSS 中的问题。

顺便说一句,感谢您查看我的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2011-07-12
    • 2014-11-18
    相关资源
    最近更新 更多