我试图将一个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#遇到了问题......
我在两种情况下都使用默认项目模板。
我忘记或不做什么?
答案 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用于下一个版本。
上面的代码现在可以使用了。