android - 宽度 :100% in CSS not rendering well in Android 4. 4

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

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

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

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

此 webview 具有以下尺寸集:

  • 90% 的屏幕宽度用于 webview 宽度
  • WebView 高度的 WRAP_CONTENT

CSS 是为适应 webview 宽度而构建的,然后高度会自行调整。 css 中没有设置绝对宽度或高度。

当我显示我的 web View 时(它已经完全加载,因为我使用 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 使我的 webview 可见时使用 500 毫秒的 postDelayed
  • 使用所有层类型选项:HARDWARE/SOFTWARE/NONE
  • 首先让我的 webview parent INVISIBLE/GONE 然后 VISIBLE

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

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

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

非常感谢

最佳答案

我设法解决了这个问题。

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

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

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

关于android - 宽度 :100% in CSS not rendering well in Android 4. 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810629/

相关文章:

java - startActivity 并拦截 intent extras

当有两个 UL 时,CSS 以最后一个 UL 为目标

java 。 thymeleaf 。 CRUD 操作后,页面上的所有 .CSS 样式都会消失

android - 如何在 android web View 中用另一个浏览器替换默认的 webkit 浏览器?

android - webview 占据整个屏幕,覆盖工具栏

android-inapp-billing-v3 消耗品购买问题

java - 如何解决 list 合并失败的问题?

java - API 级别 28 的 Android-ProviderTestCase2 不工作

html - CSS 选择 :placeholder within an Id

IOS - 如何以编程方式阻止从另一个应用程序打开一个应用程序?