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 ?
19 answers
To zadziałało dla mnie,
mWebView.setBackgroundColor(Color.TRANSPARENT);
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
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.
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.
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
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
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");
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.
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);
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);
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);
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 poloadUrl()
/loadData()
. - Ważne jest to, że powinieneś wyraźnie zadeklarować
android:hardwareAccelerated="false"
w manifeście.
Testowane na IceCream Sandwich
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.
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:
-
Dodaj to do manifestu:
android:hardwareAccelerated="false"
Lub
-
Dodaj do WebView w układzie:
android:background="@android:color/transparent" android:layerType="software"
-
Dodaj następujący widok przewijania rodziców:
android:layerType="software"
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 pokazaneWarning: 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..
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"));
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.
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);
}
}
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);
}
});
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);
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