J'ai du mal à créer une WebView avec un fond transparent.
webView.setBackgroundColor(0x00FFFFFF);
webView.setBackgroundDrawable(myDrawable);
Ensuite, je charge une page html avec
<body style="background-color:transparent;" ...
La couleur d'arrière-plan de la WebView est transparente mais dès que la page est chargée, elle est écrasée par un arrière-plan noir de la page html. Cela ne se produit que sur Android 2.2, cela fonctionne sur Android 2.1.
Alors, y a-t-il quelque chose à ajouter dans le code de la page html pour le rendre vraiment transparent?
android
background
webview
transparency
transparent
jptsetung
la source
la source
Réponses:
Cela a fonctionné pour moi,
la source
android:hardwareAccelerated="true"
Au bas de ce problème mentionné précédemment, il y a une solution. C'est une combinaison de 2 solutions.
Lorsque vous ajoutez ce code au WebViewer après avoir chargé l'url, cela fonctionne (API 11+).
Cela fonctionne même lorsque l'accélération matérielle est activée
la source
J'ai eu le même problème avec 2.2 et aussi dans 2.3. J'ai résolu le problème en donnant la valeur alpa en html et non sous Android. J'ai essayé beaucoup de choses et j'ai découvert que la
setBackgroundColor();
couleur ne fonctionne pas avec la valeur alpha.webView.setBackgroundColor(Color.argb(128, 0, 0, 0));
ne fonctionnera pas.alors voici ma solution, a fonctionné pour moi.
Et à Java,
Et voici la capture d'écran de sortie ci-dessous.
la source
En fait, c'est un bogue et personne n'a encore trouvé de solution de contournement. Un problème a été créé. Le bug est toujours là en nid d'abeille.
Veuillez la mettre en étoile si vous pensez que c'est important: http://code.google.com/p/android/issues/detail?id=14749
la source
Voici comment procéder:
Commencez par créer votre projet sur 11, mais dans AndroidManifest, définissez minSdkVersion sur 8
android: hardwareAccelerated = "false" est inutile et incompatible avec 8
Pour plus de sécurité, mettez ceci dans votre style:
a travaillé pour moi sur 2.2 et 4
la source
La chose la plus importante n'a pas été mentionnée.
Le code HTML doit avoir une
body
balisebackground-color
définie surtransparent
.La solution complète serait donc:
HTML
Activité
la source
le code ci-dessous fonctionne correctement Android 3.0+, mais lorsque vous essayez ce code sous Android 3.0, votre application est fermée de force.
Vous essayez ci-dessous le code sur votre API moins que 11 .
Ou
vous pouvez également essayer le code ci-dessous qui fonctionne sur toutes les API .
le code ci-dessus utilise plein pour moi.
la source
Essayer
webView.setBackgroundColor(0);
la source
Le code suivant fonctionne pour moi, même si j'ai plusieurs vues Web et que le défilement entre elles est un peu lent.
la source
android:hardwareAccelerated="false"
dans le fichier AndroidManifest pour l'activity
élément.v.setLayerType(LAYER_TYPE_SOFTWARE, null);
fonctionnera également.Utilisez ceci
la source
webView.setBackgroundColor(Color.TRANSPARENT)
avant ou aprèsloadUrl()
/loadData()
.android:hardwareAccelerated="false"
dans le manifeste.Testé sur IceCream Sandwich
la source
Utilisez simplement ces lignes .....
Et rappelez-vous un point qui définit toujours la couleur d'arrière-plan après le chargement des données dans la vue Web.
la source
cela fonctionnera certainement .. définir le fond en XML avec Editbackground. Maintenant, cet arrière-plan sera affiché
la source
définir le bg après le chargement du html (à partir de tests rapides, il semble que le chargement du html réinitialise la couleur bg .. c'est pour 2.3).
si vous chargez le html à partir de données que vous avez déjà, il suffit de faire un .postDelayed dans lequel vous venez de définir le bg (par exemple transparent).
la source
Si la vue Web peut faire défiler:
Ajoutez ceci au manifeste:
OU
Ajoutez ce qui suit à WebView dans la mise en page:
Ajoutez ce qui suit à la vue de défilement des parents:
la source
Essayez webView.setBackgroundColor (Color.parseColor ("# EDEDED"));
la source
J'essayais de mettre une superposition HTML transparente sur ma vue GL, mais elle a toujours un scintillement noir qui couvre ma vue GL. Après plusieurs jours à essayer de me débarrasser de ce scintillement, j'ai trouvé cette solution de contournement qui est acceptable pour moi (mais dommage pour Android).
Le problème est que j'ai besoin d'une accélération matérielle pour mes belles animations CSS et que ce
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
n'est donc pas une option pour moi.L'astuce était de mettre une seconde (vide)
WebView
entre ma vue GL et la superposition HTML. Ce quedummyWebView
je dis rendre en mode SW, et maintenant mon superpositions HTML rend lisse dans HW et vacillante plus noir.Je ne sais pas si cela fonctionne sur d'autres appareils que mon Acer Iconia A700, mais j'espère pouvoir aider quelqu'un avec cela.
la source
Cela a fonctionné pour moi. essayez de définir la couleur d'arrière-plan une fois les données chargées. pour cet objet setWebViewClient sur votre objet de vue Web comme:
la source
Essaie:
la source
Si rien ne vous aide, alors vous avez probablement une taille fixe
webView
, changez la largeur et la hauteur en wrap_content oumatch_parent
, cela devrait fonctionner. Cela a fonctionné pour moi lorsque j'ai essayé de charger un Gif.la source
Vous pouvez utiliser BindingAdapter comme ceci:
Java
XML:
Ressources
la source
est la meilleure réponse. Ça marche!
la source