Monodroid Прозрачный WebView - PullRequest
       9

Monodroid Прозрачный WebView

0 голосов
/ 27 декабря 2011

Я пытаюсь переписать Java-приложение для Android на Monodroid, однако я столкнулся с проблемой прозрачности фона веб-просмотра, который я использую для отображения содержимого каждого экрана.

Этокод корректно работает в Java-версии (черный текст на зеленом фоне), но в версии C # фон веб-просмотра черный (черный прямоугольник на зеленом фоне).

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 Ответ

4 голосов
/ 27 декабря 2011

Похоже, что значение для Android.Resource.Color.Transparent неверно.

Попытка:

webView.SetBackgroundColor(0);

или

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

Обновление:

На самом деле проблема в том, что вы используете Android.Resource.Color.Transparent вместо Android.Graphics.Color.Transparent. Ресурс - это идентификатор ресурса, а не цвет.

Сказав это, Android.Graphics.Color.Transparent также не работает. Он закодирован как 0xFFFFFF00, который явно не прозрачен для Android. Я переключил его на 0x00000000 для следующего выпуска.

Код выше пока будет работать.

...