phy*_*lis 5 css android 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);
Run Code Online (Sandbox Code Playgroud)
此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)
Run Code Online (Sandbox Code Playgroud)
我不知道是否存在直接关系,我不认为即使不使用此方法,我的CSS也无法正确呈现.
我尝试了很多东西:
但没有任何效果.看起来只有在webview对用户可见时才会呈现CSS.
我无法显示源代码,因为它是出于专业目的,因此我只想对可以搜索的位置有不同的观点(或者如果有人已经在DDMS中看到这个奇怪的错误)
有人知道如何在显示此webview之前等待CSS在webview中呈现吗?
非常感谢
我设法解决了这个问题。
我有一个display: table;HTML 主 div 的样式,删除它会使我的渲染看起来不错。
由于它在 Android 以前的版本中运行良好,因此我无法确定这是 webview 的错误还是我的 CSS 中的问题。
顺便说一下,感谢您查看我的问题