我在尝试将WebView背景设置为透明时遇到问题。我发现了很多类似的问题和解决方法,如何将WebView背景设置为透明。 最受欢迎的API解决方案> 11是:
// Color.TRANSPARENT or 0x00000000 or simple 0 as a value
webview.setBackgroundColor(Color.TRANSPARENT);
if (Build.VERSION.SDK_INT >= 11){
setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
}
但是,当我将此行添加到setLayerType(WebView.LAYER_TYPE_SOFTWARE,null)时,webview中的HTML内容就会消失。 Webview本身具有正确的比例(内容高度),滚动甚至点击或点击它做出反应(我有点击图像缩放系统)。但内容没有显示。
如果删除setLayerType()方法,则内容显示正常但滚动时会闪烁。
我使用Android 4.2.2 JB(API 17)和整个应用程序的hardwareAcceleration设置为true。我的HTML内容正文CSS设置为
background:transparent;
另外,我的WebView放在Relative视图中,另外两个TextView和RelativeLayout itselft放在ScrollView中。
我没有为我的案例找到任何解决方案 - 我发现所有建议都是将setLayerType()发送给软件。
答案 0 :(得分:0)
我遇到了同样的问题,但问题是我的webview在scrollview中:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="@string/alert.resume"
android:textColor="#ff000000"
android:textSize="14sp" />
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
然后,我删除了scrollview并且技巧有效!
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="@string/alert.resume"
android:textColor="#ff000000"
android:textSize="14sp" />
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
像往常一样捣蛋:
WebView text = (WebView) view.findViewById(R.id.webview);
text.setDrawingCacheEnabled(false);
WebSettings settings = text.getSettings();
settings.setDefaultTextEncodingName("utf-8");
text.setBackgroundColor(Color.TRANSPARENT);
if (Build.VERSION.SDK_INT >= 11) // Android v3.0+
try {
text.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
} catch (Exception e) {
}