Monodroid透明WebView

时间:2011-12-27 16:29:40

标签: android webview transparent xamarin.android

我试图将一个java安卓应用程序重新编写到monodroid中,但是我遇到了一个问题,即用于显示每个屏幕内容的webview的背景透明度。

此代码在java版本(绿色背景上的黑色文本)上正常工作,但在C#版本中,webview的背景为黑色(绿色背景上的黑色矩形)。

Java代码:

@Override public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    LinearLayout layout = new LinearLayout(getApplicationContext());
    layout.setBackgroundColor(Color.GREEN);
    WebView webView = new WebView(getApplicationContext());
    layout.addView(webView);
    setContentView(layout);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setBackgroundColor(Color.TRANSPARENT);

    webView.loadData("<html><body style='background-color: transparent;'>" + 
                     "Some text...</body></html>", "text/html", "UTF-8");
}

C#代码:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    var layout = new LinearLayout(ApplicationContext);
    layout.SetBackgroundColor(Color.Green);
    var webView = new WebView(ApplicationContext);
    layout.AddView(webView);
    SetContentView(layout);
    webView.Settings.JavaScriptEnabled = true;
    webView.SetBackgroundColor(Android.Resource.Color.Transparent);

    webView.LoadData("<html><body style='background-color: transparent;'>" +
                        "Some text...</body></html>", "text/html", "UTF-8");
}

我知道人们有类似的问题,但他们通常是java版本无法正常工作。我的C#遇到了问题......

我在两种情况下都使用默认项目模板。

我忘记或不做什么?

1 个答案:

答案 0 :(得分:4)

看起来Android.Resource.Color.Transparent的值是错误的。

尝试:

webView.SetBackgroundColor(0);

或:

webView.SetBackgroundColor(new Color (0, 0, 0, 0));

更新

实际上,问题是你使用的是Android.Resource.Color.Transparent而不是Android.Graphics.Color.Transparent。资源是资源ID,而不是颜色。

话虽如此,Android.Graphics.Color.Transparent也不起作用。它的编码为0xFFFFFF00,对于Android来说显然不是透明的。我已经将它切换到0x00000000用于下一个版本。

上面的代码现在可以使用了。