Oll*_*e C 13 android android-webview
这个问题的一些背景是在这里.它涉及解决Android中已知的错误,其中WebView背景需要透明. Android WebView样式background-color:透明在android 2.2上被忽略
它涉及WebView,托管具有透明背景的HTML文档,因此WebView是透明的,HTML文档可以覆盖到其他视图上.
将以下方法添加到WebView子类并从构造函数中调用它在Android v2,v3和v4上工作,当WebView的像素高度大于屏幕高度(例如WebView在ScrollView中)时除外,比屏幕长.)
protected void setBackgroundToTransparent() {
this.setBackgroundColor(Color.TRANSPARENT);
this.setBackgroundDrawable(null);
if (Build.VERSION.SDK_INT >= 11) // Android v3.0+
try {
Method method = View.class.getMethod("setLayerType", int.class, Paint.class);
method.invoke(this, 1, new Paint()); // 1 = LAYER_TYPE_SOFTWARE (API11)
} catch (Exception e) {}
}
Run Code Online (Sandbox Code Playgroud)
小智 11
我遇到了同样的问题,我发现这是一些关于硬件加速的Android版本的错误.Spiri的上述答案有效,但我需要将我的WebView硬件加速,因为它需要播放视频.我发现的效果很好,如下:
而不是使用
mWebView.setBackgroundColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)
我用的是:
mWebView.setBackgroundColor(Color.argb(1, 255, 255, 255));
Run Code Online (Sandbox Code Playgroud)
这适用于我之前遇到此问题的所有Android设备.
我在android api 16级遇到了类似的问题,这解决了它:
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); // 'view' is a WebView
Run Code Online (Sandbox Code Playgroud)
这会根据文档禁用视图上的硬件加速:http: //developer.android.com/guide/topics/graphics/hardware-accel.html
我知道这不是可行的方法,但由于这是一个已知问题,因此他们提出了一个合适的解决方案,这个就完成了工作(至少对我而言).
小智 1
前几天我花了几个小时在这个问题上,尝试了有关该主题的所有可能的答案,并亲自调查了一些东西。我遇到了同样的问题,如果网络视图是可滚动的,那么它就不会是透明的。使其透明的唯一方法是在“设置”>“开发人员选项”中禁用 GPU 渲染。我最终只是检查是否启用了 GPU 渲染,然后将背景设置为最匹配的颜色。如果你想出一个解决方案,我会很高兴听到它。
| 归档时间: |
|
| 查看次数: |
7977 次 |
| 最近记录: |