2011-12-27 67 views
0

我想重新編寫一個java android應用程序到monodroid,但我遇到了一個問題,我用webview的背景透明度來顯示每個屏幕的內容。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#雖然有問題...

我在這兩種情況下都使用默認項目模板。

我忘了或不做什麼?

回答

4

它看起來像Android.Resource.Color.Transparent的值是錯誤的。

嘗試:

webView.SetBackgroundColor(0); 

或:

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

更新:

其實,這個問題是您正在使用Android.Resource.Color.Transparent代替Android.Graphics.Color 。透明。資源是資源ID,而不是顏色。

話雖如此,Android.Graphics.Color.Transparent也不起作用。它的編碼爲0xFFFFFF00,這對Android來說顯然不透明。我已經將它切換到0x00000000以用於下一個版本。

上面的代碼現在可以使用。

+0

感謝您的發現。一定是聖誕節的復發:-) – Matthew 2011-12-28 12:23:49