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 WebView jest przezroczysty, ale zaraz 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 więc coś do dodania w kodzie strony html, aby był naprawdę przejrzysty?
android
background
webview
transparency
transparent
jptsetung
źródło
źródło
Odpowiedzi:
To zadziałało dla mnie,
źródło
android:hardwareAccelerated="true"
U dołu tego wspomnianego wcześniej problemu znajduje się rozwiązanie. To połączenie 2 rozwiązań.
Dodanie tego kodu do WebViewer po załadowaniu adresu URL działa (API 11+).
Działa nawet wtedy, gdy akceleracja sprzętowa jest włączona
źródło
Miałem ten sam problem z 2.2, a także z 2.3. Rozwiązałem problem, podając wartość alpa w html, a nie w Androidzie. Próbowałem wielu rzeczy i odkryłem, że
setBackgroundColor();
kolor nie działa z wartością alfa.webView.setBackgroundColor(Color.argb(128, 0, 0, 0));
nie będzie działać.więc oto moje rozwiązanie, które zadziałało dla mnie.
W Javie
A oto zrzut ekranu wyjściowego poniżej.
źródło
W rzeczywistości jest to błąd i jak dotąd nikt nie znalazł obejścia. Utworzono problem. Błąd jest nadal w strukturze plastra miodu.
Oznacz go gwiazdką, jeśli uważasz, że to ważne: http://code.google.com/p/android/issues/detail?id=14749
źródło
Tak to się robi:
Najpierw przygotuj swój projekt na 11, ale w AndroidManifest ustaw minSdkVersion na 8
android: hardwareAccelerated = "false" jest niepotrzebne i jest niezgodne z 8
Dla bezpieczeństwa umieść to w swoim stylu:
pracował dla mnie na 2.2 i 4
źródło
Najważniejsza rzecz nie została wymieniona.
HTML musi mieć
body
tag zbackground-color
ustawioną wartościątransparent
.Tak więc pełne rozwiązanie byłoby następujące:
HTML
Czynność
źródło
poniższy kod działa dobrze w systemie Android 3.0+, ale gdy spróbujesz tego kodu poniżej Androida 3.0, aplikacja zostanie zamknięta.
Wypróbuj poniższy kod na swoim mniej niż API 11 .
Lub
możesz także wypróbować poniższy kod, który działa dobrze na wszystkich API .
powyższy kod użyj pełnego dla mnie.
źródło
Próbować
webView.setBackgroundColor(0);
źródło
Poniższy kod działa dla mnie, chociaż mam wiele stron internetowych, a przewijanie między nimi jest nieco powolne.
źródło
android:hardwareAccelerated="false"
używanej w AndroidManifest dlaactivity
elementu.v.setLayerType(LAYER_TYPE_SOFTWARE, null);
też zadziała.Użyj tego
źródło
webView.setBackgroundColor(Color.TRANSPARENT)
przed, czy poloadUrl()
/loadData()
.android:hardwareAccelerated="false"
w manifeście.Testowane na IceCream Sandwich
źródło
Po prostu użyj tych linii .....
I pamiętaj o punkcie, który zawsze ustawiaj kolor tła po załadowaniu danych w widoku internetowym.
źródło
to na pewno zadziała ... ustaw tło w XML za pomocą Editbackground. Teraz to tło zostanie pokazane
źródło
ustaw bg po załadowaniu html (z szybkich testów wygląda na to, że załadowanie html'a resetuje kolor bg .. to jest dla 2.3).
jeśli ładujesz html z danych, które już masz, wystarczy wykonać .postDelayed, w którym po prostu ustawisz bg (na przykład na przezroczysty).
źródło
Jeśli przeglądarka internetowa jest przewijalna:
Dodaj to do manifestu:
LUB
Dodaj następujące elementy do WebView w układzie:
Dodaj następujące elementy do widoku przewijania rodziców:
źródło
Wypróbuj webView.setBackgroundColor (Color.parseColor ("# EDEDED"));
źródło
Próbowałem umieścić przezroczystą nakładkę HTML na moim widoku GL, ale zawsze ma czarne migotanie, które zakrywa mój widok GL. Po kilku dniach próby pozbycia 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 do moich ładnych animacji CSS i tak dalej
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
nie jest to dla mnie opcja.Sztuczka polegała na umieszczeniu drugiego (pustego)
WebView
między moim widokiem GL a nakładką HTML. TodummyWebView
kazałem renderować w trybie SW, a teraz moje nakładki HTML renderują się płynnie w HW i nie ma już czarnego migotania.Nie wiem, czy to działa na innych urządzeniach niż mój Acer Iconia A700, ale mam nadzieję, że mógłbym komuś w tym pomóc.
źródło
To zadziałało dla mnie. spróbuj ustawić kolor tła po załadowaniu danych. dla tego setWebViewClient w twoim obiekcie webview, takim jak:
źródło
Spróbować:
źródło
Jeśli nic nie pomaga, to najprawdopodobniej masz stały rozmiar
webView
, zmień szerokość i wysokość na wrap_content lubmatch_parent
powinno działać. To zadziałało, gdy próbowałem załadować GIF.źródło
Możesz używać BindingAdapter w ten sposób:
Jawa
XML:
Zasoby
źródło
to najlepsza odpowiedź. To działa!
źródło