Android WebView style background-color: transparent ignored on android 2.2

Staram się stworzyć WebView z przezroczystym tłem.

webView.setBackgroundColor(0x00FFFFFF);
webView.setBackgroundDrawable(myDrawable);

Następnie Ładuję stronę html z

<body style="background-color:transparent;" ...

Kolor tła widoku sieci Web jest przezroczysty, ale po załadowaniu strony jest zastępowany czarnym tłem ze strony html. Dzieje się tak tylko na Androidzie 2.2, działa na Androidzie 2.1.

Czy jest coś do dodania w kodzie strony html, aby była naprawdę przejrzysta ?

Author: jptsetung, 2011-02-15

19 answers

To zadziałało dla mnie,

mWebView.setBackgroundColor(Color.TRANSPARENT);
 264
Author: scottyab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-02 19:15:18

Na dole omawianego wcześniej zagadnienia znajduje się rozwiązanie. To połączenie 2 rozwiązań.

webView.setBackgroundColor(Color.TRANSPARENT);
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

Podczas dodawania tego kodu do WebViewer Po załadowaniu url, działa (API 11+).

Działa nawet, gdy akceleracja hardeware jest włączona

 120
Author: Ceetn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-02 18:59:05

Miałem ten sam problem z 2.2 i również w 2.3. Rozwiązałem problem, podając wartość alpa w html, a nie w Androidzie. Próbowałem wielu rzeczy i okazało się, że setBackgroundColor(); kolor nie działa z wartością Alfa. Nie zadziała.

Więc oto moje rozwiązanie, zadziałało dla mnie.
      String webData = StringHelper.addSlashes("<!DOCTYPE html><head> <meta http-equiv=\"Content-Type\" " +
      "content=\"text/html; charset=utf-8\"> </head><body><div style=\"background-color: rgba(10,10,10,0.5); " +
      "padding: 20px; height: 260px; border-radius: 8px;\"> $$$ Content Goes Here ! $$$ </div> </body></html>");

I w Javie,

    webView = (WebView) findViewById(R.id.webview);
    webView.setBackgroundColor(0);
    webView.loadData(webData, "text/html", "UTF-8");

A oto zrzut ekranu wyjściowego poniżej.Tutaj wpisz opis obrazka

 35
Author: osayilgan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-02 10:46:42

Właściwie to jest błąd i nikt dotąd nie znalazł obejścia. Powstał problem. Pluskwa nadal jest w plastrze miodu.

Proszę o gwiazdkę, jeśli uważasz, że to ważne: http://code.google.com/p/android/issues/detail?id=14749

 31
Author: jptsetung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-01 08:28:20

Tak to się robi:

Najpierw Utwórz swój projekt w oparciu o 11, ale w AndroidManifest Ustaw minSdkVersion na 8

Android: hardwareAccelerated= "false" jest niepotrzebny i jest niezgodny z 8

wv.setBackgroundColor(0x00000000);
if (Build.VERSION.SDK_INT >= 11) wv.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

this.wv.setWebViewClient(new WebViewClient()
{
    @Override
    public void onPageFinished(WebView view, String url)
    {
        wv.setBackgroundColor(0x00000000);
        if (Build.VERSION.SDK_INT >= 11) wv.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
    }
});

Dla bezpieczeństwa postaw to w swoim stylu:

BODY, HTML {background: transparent}

Pracował dla mnie na 2.2 i 4

 22
Author: Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-10 18:41:35

Nie wspomniano o najważniejszej rzeczy.

Html musi mieć body znacznik z background-color ustawiony na transparent.

Więc pełne rozwiązanie byłoby:


HTML

    <body style="display: flex; background-color:transparent">some content</body>

Aktywność

    WebView wv = (WebView) findViewById(R.id.webView);
    wv.setBackgroundColor(0);
    wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    wv.loadUrl("file:///android_asset/myview.html");
 10
Author: lilotop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-29 11:32:47

Poniższy kod działa dobrze Android 3.0+ ale gdy spróbujesz tego kodu poniżej Androida 3.0, Twoja aplikacja zostanie mocno zamknięta.

webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

Wypróbuj poniższy kod na swoim mniej niż API 11.

webview.setBackgroundColor(Color.parseColor("#919191"));

Lub

Możesz również wypróbować poniższy kod, który działa na wszystkich API dobrze.

    webview.setBackgroundColor(Color.parseColor("#919191"));
    if (Build.VERSION.SDK_INT >= 11) {
        webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
    }

Powyższy kod jest dla mnie pełny.

 9
Author: duggu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-16 04:21:36

Następujący kod działa dla mnie, choć mam wiele webviewów i przewijanie między nimi jest trochę powolne.

v.setBackgroundColor(Color.TRANSPARENT);
Paint p = new Paint();
v.setLayerType(LAYER_TYPE_SOFTWARE, p); 
 7
Author: Umair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-06 10:54:56

Spróbuj webView.setBackgroundColor(0);

 6
Author: Andrew Podkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-28 19:50:53

Użyj tego

WebView myWebView = (WebView) findViewById(R.id.my_web);

myWebView.setBackgroundColor(0);
 6
Author: Zahid Habib,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-02 04:34:14
  • po wypróbowaniu wszystkiego podanego powyżej. I found it doesn ' t matter bother you specified
    webView.setBackgroundColor(Color.TRANSPARENT) przed czy po loadUrl() /loadData().
  • Ważne jest to, że powinieneś wyraźnie zadeklarować android:hardwareAccelerated="false" w manifeście.

Testowane na IceCream Sandwich

 6
Author: Gaurav Arora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-01 06:00:30

Użyj tych linii .....

webView.loadDataWithBaseURL(null,"Hello", "text/html", "utf-8", null);
webView.setBackgroundColor(0x00000000);

I pamiętaj o punkcie, który zawsze ustawia kolor tła po wczytaniu danych w widoku webview.

 3
Author: Atul Bhardwaj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-13 06:30:09

Jeśli webview jest przewijalny:

  1. Dodaj to do manifestu:

    android:hardwareAccelerated="false"
    

Lub

  1. Dodaj do WebView w układzie:

    android:background="@android:color/transparent"
    android:layerType="software"
    
  2. Dodaj następujący widok przewijania rodziców:

    android:layerType="software"
    
 3
Author: Baton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-28 19:32:50
webView.setBackgroundColor(0x00000000);
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
To na pewno zadziała.. Ustaw tło w XML za pomocą Editbackground. Teraz to tło zostanie pokazane
 3
Author: Shivendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-21 14:36:59

Ustaw bg po załadowaniu html(z szybkich testów wydaje się, że ładowanie html resetuje kolor bg.. jest to dla 2.3).

Jeśli ładujesz html z danych, które już masz, po prostu wykonaj .postDelayed, w którym po prostu ustawić bg(na przykład przezroczysty) wystarczy..

 2
Author: Lassi Kinnunen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-06 08:53:01

Spróbuj webView.setBackgroundColor (Color.parseColor("#EDEDED"));

 0
Author: raja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-29 11:46:07

Próbowałem umieścić przezroczystą nakładkę HTML na mój widok GL, ale zawsze migocze czarny, który pokrywa mój widok gl. Po kilku dniach próbujących pozbyć się tego migotania znalazłem to obejście, które jest dla mnie akceptowalne (ale szkoda dla Androida).

Problem polega na tym, że potrzebuję akceleracji sprzętowej dla moich ładnych animacji CSS, więc webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); nie jest dla mnie opcją.

Sztuczka polegała na umieszczeniu drugiego (pustego) WebView pomiędzy moim widokiem GL a nakładką HTML. This dummyWebView I kazano renderować w trybie SW, a teraz moje nakładki HTML renderują gładko w HW i nie ma już migotania czerni.

Nie wiem, czy to działa na innych urządzeniach niż Mój Acer Iconia A700, ale mam nadzieję, że mogę komuś w tym pomóc.
public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        RelativeLayout layout = new RelativeLayout(getApplication());
        setContentView(layout);

        MyGlView glView = new MyGlView(this);

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);

        dummyWebView = new WebView(this);
        dummyWebView.setLayoutParams(params);
        dummyWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        dummyWebView.loadData("", "text/plain", "utf8");
        dummyWebView.setBackgroundColor(0x00000000);

        webView = new WebView(this);
        webView.setLayoutParams(params);
        webView.loadUrl("http://10.0.21.254:5984/ui/index.html");
        webView.setBackgroundColor(0x00000000);


        layout.addView(glView);
        layout.addView(dummyWebView);
        layout.addView(webView);
    }
}
 0
Author: Ingemar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-05 09:13:28

To mi pomogło. spróbuj ustawić kolor tła po załadowaniu danych. dla tego setWebViewClient na Twoim obiekcie webview jak:

    webView.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageFinished(WebView view, String url)
        {
            super.onPageFinished(view, url);
            webView.setBackgroundColor(Color.BLACK);
        }
    });
 0
Author: Abdul Mohsin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-03 10:17:08

Wypróbuj:

myWebView.setAlpha(0.2f);
 0
Author: Abhilash Nair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 19:21:33