【发布时间】:2013-07-24 00:16:45
【问题描述】:
这个问题的一些背景是here。它涉及解决 Android 中 WebView 背景需要透明的已知错误。 Android WebView style background-color:transparent ignored on 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) {}
}
【问题讨论】:
-
这里有问题吗,或者您是否在问题本身中回答了它?
-
我认为很明显问题是我如何解决该问题以使透明的 WebView 正常工作。
-
所以问题是如何使它也适用于异常?无论如何,即使在 4.0 上,当我在模拟器中尝试时,它似乎也能正常工作。
-
是的,这就是问题所在。它不能在 Galaxy Nexus 上始终如一地工作。
-
嗯,感谢您使用 WebView 解决了我的透明度问题。 ;) 对我来说看起来像是一个 Android 错误(比较 code.google.com/p/android/issues/detail?id=28410)。此外,在 ScrollView 中放置一个 WebView 感觉不太好。因为 WebView 有自己的滚动,两个视图竞争触摸事件。