0

WebView の透明性に問題があります。たくさんの解決策を読みましたが、どれもうまくいきませんでした。良いものを見逃すかもしれません。

webView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webView.getSettings();
webSettings.getPluginState();
webSettings.setPluginState(PluginState.ON);

String customHtml = "<div style=\"padding:0;margin:0;background:transparent;border:none;position:relative;cursor:pointer;overflow:hidden; height:165px;\">    <object ggnoclick ggswfcid name=\"flashobj\" id=\"flashobj\" width=\"100%\" height=\"165\" data=\"http://c.gumgum.com/ads/com/cbs/55thgrammys/grammys_ca_rihanna.swf?modalURL=GGUID\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" wmode=\"transparent\" background=\"transparent\" style=\"background:transparent;\">        <param name=\"movie\" value=\"http://c.gumgum.com/ads/com/cbs/55thgrammys/grammys_ca_rihanna.swf?modalURL=GGUID\" />        <param name=\"AllowScriptAccess\" value=\"always\" />        <param name=\"wmode\" value=\"transparent\" />    </object></div>";

webView.loadData(customHtml, "text/html", "utf-8");
webSettings.setJavaScriptEnabled(true);
webView.setBackgroundColor(Color.TRANSPARENT);
webView.setBackgroundResource(color.transparent);
//webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

最後の行のコメントを外すと、私のコンテンツでもすべての webView が透明になりますが、最後の行をコメントすると、背景は白で透明ではありません。

誰にもアイデアがありますか?

4

1 に答える 1

0

これは私にとってはうまくいきます(Android 2.1デバイスとAndroid 4.1デバイスでテスト済み):

解決策はこのスレッドからです。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        WebView webview = (WebView) findViewById(R.id.webView1);
        if (webview!=null) {
            String content = "Hello World";
            String html = 
"<html>" +
"<body background=\"#00000000\" link=\"white\">" +
"<font color=\"white\">" + 
content + 
"</font>" +
"</body>" +
"</html>";
            webview.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
            webview.setBackgroundColor(0x00000000);
            if (Build.VERSION.SDK_INT >= 11) {// Android v3.0+
                try {
                    Method method = View.class.getMethod("setLayerType", int.class, Paint.class);
                    method.invoke(webview, 1, new Paint()); // 1 = LAYER_TYPE_SOFTWARE (API11)
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
于 2013-01-29T06:24:27.530 に答える