Ich habe Probleme, eine WebView mit transparentem Hintergrund zu erstellen.
webView.setBackgroundColor(0x00FFFFFF);
webView.setBackgroundDrawable(myDrawable);
Dann lade ich eine HTML-Seite mit
<body style="background-color:transparent;" ...
Die Hintergrundfarbe von WebView ist transparent, aber sobald die Seite geladen ist, wird sie von einem schwarzen Hintergrund von der HTML-Seite überschrieben. Dies passiert nur auf Android 2.2, es funktioniert auf Android 2.1.
Gibt es also etwas, das dem HTML-Seitencode hinzugefügt werden muss, um ihn wirklich transparent zu machen?
android
background
webview
transparency
transparent
jptsetung
quelle
quelle
Antworten:
Das hat bei mir funktioniert,
quelle
android:hardwareAccelerated="true"
Am Ende dieses zuvor erwähnten Problems befindet sich eine Lösung. Es ist eine Kombination aus 2 Lösungen.
Beim Hinzufügen von Code zu dem WebViewer nach der URL geladen, es funktioniert (API 11+).
Es funktioniert sogar, wenn die Hardeware-Beschleunigung eingeschaltet ist
quelle
Ich hatte das gleiche Problem mit 2.2 und auch in 2.3. Ich habe das Problem gelöst, indem ich den alpa-Wert in HTML und nicht in Android angegeben habe. Ich habe viele Dinge ausprobiert und herausgefunden, dass
setBackgroundColor();
Farbe mit Alpha-Wert nicht funktioniert.webView.setBackgroundColor(Color.argb(128, 0, 0, 0));
wird nicht funktionieren.Also hier ist meine Lösung, die für mich gearbeitet hat.
Und in Java
Und hier ist der Screenshot der Ausgabe unten.
quelle
Eigentlich ist es ein Fehler und bisher hat niemand eine Problemumgehung gefunden. Ein Problem wurde erstellt. Der Käfer ist immer noch hier in der Wabe.
Bitte markieren Sie es, wenn Sie es für wichtig halten: http://code.google.com/p/android/issues/detail?id=14749
quelle
Das ist wie man es macht:
Stellen Sie Ihr Projekt zunächst auf 11, aber setzen Sie in AndroidManifest minSdkVersion auf 8
android: hardwareAccelerated = "false" ist nicht erforderlich und mit 8 nicht kompatibel
Stellen Sie dies aus Sicherheitsgründen in Ihren Stil:
arbeitete für mich am 2.2 und 4
quelle
Das Wichtigste wurde nicht erwähnt.
Das HTML muss ein
body
Tag haben, auf dasbackground-color
gesetzt isttransparent
.Die vollständige Lösung wäre also:
HTML
Aktivität
quelle
Der folgende Code funktioniert gut mit Android 3.0+, aber wenn Sie diesen Code unter Android 3.0 ausprobieren, wird Ihre App zwangsweise geschlossen.
Sie versuchen den folgenden Code auf Ihrer weniger als API 11 .
Oder
Sie können auch den folgenden Code ausprobieren, der für alle APIs geeignet ist.
oben Code voll für mich verwenden.
quelle
Versuchen
webView.setBackgroundColor(0);
quelle
Das Befolgen von Code funktioniert für mich, obwohl ich mehrere Webansichten habe und das Scrollen zwischen ihnen etwas träge ist.
quelle
android:hardwareAccelerated="false"
im AndroidManifest für dasactivity
Element.v.setLayerType(LAYER_TYPE_SOFTWARE, null);
wird auch funktionieren.Benutze das
quelle
webView.setBackgroundColor(Color.TRANSPARENT)
vor oder nachloadUrl()
/ angebenloadData()
.android:hardwareAccelerated="false"
im Manifest ausdrücklich deklarieren .Getestet auf IceCream Sandwich
quelle
Verwenden Sie einfach diese Zeilen .....
Und denken Sie an einen Punkt, bei dem die Hintergrundfarbe nach dem Laden von Daten in der Webansicht immer festgelegt wird.
quelle
Dies wird definitiv funktionieren. Setzen Sie den Hintergrund in XML mit Editbackground. Nun wird dieser Hintergrund angezeigt
quelle
Stellen Sie die BG nach dem Laden des HTML ein (nach schnellen Tests scheint das Laden des HTML die BG-Farbe zurückzusetzen. Dies ist für 2.3).
Wenn Sie das HTML aus Daten laden, die Sie bereits erhalten haben, reicht es aus, nur eine .postDelayed-Datei zu erstellen, in der Sie nur die BG (zum Beispiel transparent) einstellen.
quelle
Wenn die Webansicht scrollbar ist:
Fügen Sie dies dem Manifest hinzu:
ODER
Fügen Sie WebView im Layout Folgendes hinzu:
Fügen Sie der übergeordneten Bildlaufansicht Folgendes hinzu:
quelle
Versuchen Sie es mit webView.setBackgroundColor (Color.parseColor ("# EDEDED")).
quelle
Ich habe versucht, ein transparentes HTML-Overlay über meine GL-Ansicht zu legen, aber es flackert immer schwarz, was meine GL-Ansicht abdeckt. Nachdem ich einige Tage lang versucht hatte, dieses Flackern loszuwerden, fand ich diese Problemumgehung, die für mich akzeptabel ist (aber eine Schande für Android).
Das Problem ist, dass ich Hardwarebeschleunigung für meine netten CSS-Animationen benötige und daher
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
für mich keine Option ist.Der Trick bestand darin, eine Sekunde (leer)
WebView
zwischen meine GL-Ansicht und das HTML-Overlay zu setzen. DiesdummyWebView
ich angewiesen, im SW-Modus zu rendern, und jetzt werden meine HTML-Overlays in HW glatt und kein schwarzes Flackern mehr.Ich weiß nicht, ob dies auf anderen Geräten als My Acer Iconia A700 funktioniert, aber ich hoffe, ich könnte jemandem dabei helfen.
quelle
Das hat bei mir funktioniert. Versuchen Sie, die Hintergrundfarbe einzustellen, nachdem die Daten geladen wurden. für diesen setWebViewClient auf Ihrem Webview-Objekt wie:
quelle
Ausprobieren:
quelle
Wenn nichts hilft, haben Sie höchstwahrscheinlich eine feste Größe
webView
, ändern Sie die Breite und Höhe in wrap_content odermatch_parent
es sollte funktionieren. Das hat bei mir funktioniert, als ich versucht habe, ein Gif zu laden.quelle
Sie können BindingAdapter folgendermaßen verwenden:
Java
XML:
Ressourcen
quelle
ist die beste Antwort. Es klappt!
quelle