如何在KITKAT(4.4)上使Android Webview背景透明

5

最近,我在Android上实现了基于Web的应用程序。我想让Webview的背景颜色透明

经过搜索,我发现需要使用以下两行代码:

newWebView.setBackgroundColor(0x00000000);                  
newWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

这适用于Android 4.0〜4.3版本,但不适用于4.4 KITKAT。

我只得到了白色背景。此外,当我设置背景颜色为黑色时,如下所示:

newWebView.setBackgroundColor(Color.BLACK);

我也看到了白色背景。 有人知道解决方法吗?


请访问此链接:https://dev59.com/-mIj5IYBdhLWcg3wERJx。 - M D
那篇帖子对我没用 :( - Stern
尝试设置 Webview 本身的 alpha 标签,但我不确定它是否存在。 - Illegal Argument
1
@IllegalArgument .setAlpha() 方法是有效的,它可以使 WebView 上的每个元素透明,但这不是我想要的。 - Stern
2个回答

4

这可能会对你有所帮助

    webView.setBackgroundColor(0x00000000);
if (Build.VERSION.SDK_INT >= 11) webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

this.wv.setWebViewClient(new WebViewClient()
{
    @Override
    public void onPageFinished(WebView view, String url)
    {
        view.setBackgroundColor(0x00000000);
        if (Build.VERSION.SDK_INT >= 11) view.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
    }
});

来源:http://premius.net/blog/andoid/118-android-webview-transparent-background-for-android-2-3-and-4-x.html


1
它适用于4.3及以下版本,但不适用于4.4(奇巧巧克力):( - Stern

1

适用于 Android 6(对我而言),请参见先前的答案。

            wv.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    view.setBackgroundColor(ContextCompat.getColor(context, R.color.transparent));
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                        view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
                    } else {
                        view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
                    }
                }
            });
            wv.setBackgroundResource(android.R.color.transparent);

同时,您可以尝试添加wv.setWebChromeClient的内容。 - VKDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接