2011-12-27 3 views
0

私はJavaのアンドロイドアプリをモノドロイドに書き直そうとしていますが、各画面の内容を表示するために使用するwebviewの背景透明性に問題があります。Monodroid Transparent 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