2011-12-27 9 views
0

J'essaie de réécrire une application Android Java en monodroid, mais j'ai rencontré un problème avec la transparence d'arrière-plan de la WebView que j'utilise pour afficher le contenu de chaque écran.Monodroid Transparent WebView

Ce code fonctionne correctement sur la version java (texte noir sur fond vert), mais dans la version C#, l'arrière-plan du webview est noir (rectangle noir sur fond vert).

code 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# Code:

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"); 
} 

Je sais qu'il ya des problèmes similaires que les gens où ayant, mais ils étaient en général que la version java ne fonctionne pas. Mon C# a cependant des problèmes ...

J'utilise le modèle de projet par défaut dans les deux cas.

Qu'est-ce que j'oublie ou ne fais pas?

Répondre

4

Il semble que la valeur pour Android.Resource.Color.Transparent est erronée.

Essayez:

webView.SetBackgroundColor(0); 

ou:

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

Mise à jour:

En fait, le problème est que vous utilisez Android.Resource.Color.Transparent au lieu de Android.Graphics.Color .Transparent. La ressource est un identifiant de ressource, pas une couleur.

Cela dit, Android.Graphics.Color.Transparent ne fonctionne pas non plus. Il est codé comme 0xFFFFFF00 qui n'est apparemment pas transparent pour Android. Je l'ai passé à 0x00000000 pour la prochaine version.

Le code ci-dessus fonctionnera pour le moment.

+0

Merci d'avoir remarqué cela. Doit avoir été une rechute de Noël :-) – Matthew