Estou lutando para criar um WebView com fundo transparente.
webView.setBackgroundColor(0x00FFFFFF);
webView.setBackgroundDrawable(myDrawable);
Então eu carrego uma página html com
<body style="background-color:transparent;" ...
A cor de plano de fundo do WebView é transparente, mas, assim que a página é carregada, ela é substituída por um plano de fundo preto da página html. Isso só acontece no android 2.2, funciona no android 2.1.
Então, há algo a acrescentar no código da página html para torná-lo realmente transparente?
android
background
webview
transparency
transparent
jptsetung
fonte
fonte
Respostas:
Isso funcionou para mim,
fonte
android:hardwareAccelerated="true"
No final desta questão mencionada anteriormente, há uma solução. É uma combinação de 2 soluções.
Ao adicionar esse código ao WebViewer após carregar o URL, ele funciona (API 11+).
Até funciona quando a aceleração do hardeware está ativada
fonte
Eu tive o mesmo problema com o 2.2 e também no 2.3. Eu resolvi o problema, dando o valor de alpa em html, não no android. Eu tentei muitas coisas e descobri que a
setBackgroundColor();
cor não funciona com valor alfa.webView.setBackgroundColor(Color.argb(128, 0, 0, 0));
não funciona.então aqui está a minha solução, funcionou para mim.
E em Java,
E aqui está a captura de tela de saída abaixo.
fonte
Na verdade, é um bug e ninguém encontrou uma solução alternativa até o momento. Um problema foi criado. O bug ainda está aqui no favo de mel.
Marque com estrela se achar importante: http://code.google.com/p/android/issues/detail?id=14749
fonte
É assim que se faz:
Primeiro, faça sua base do projeto em 11, mas no AndroidManifest defina minSdkVersion como 8
android: hardwareAccelerated = "false" é desnecessário e é incompatível com 8
Por segurança, coloque isso no seu estilo:
trabalhou para mim em 2.2 e 4
fonte
A coisa mais importante não foi mencionada.
O html deve ter uma
body
marcabackground-color
definida comotransparent
.Portanto, a solução completa seria:
HTML
Atividade
fonte
o código abaixo funciona bem no Android 3.0 ou superior, mas quando você tenta esse código abaixo do android 3.0, seu aplicativo é fechado à força.
Você tenta o código abaixo na sua API menor que a 11 .
Ou
você também pode tentar o código abaixo, que funciona com toda a API .
código acima usar completo para mim.
fonte
Experimentar
webView.setBackgroundColor(0);
fonte
O código a seguir funciona para mim, embora eu tenha várias visualizações da web e a rolagem entre elas seja um pouco lenta.
fonte
android:hardwareAccelerated="false"
o AndroidManifest para oactivity
elemento.v.setLayerType(LAYER_TYPE_SOFTWARE, null);
também vai funcionar.Usa isto
fonte
webView.setBackgroundColor(Color.TRANSPARENT)
antes ou depois deloadUrl()
/loadData()
.android:hardwareAccelerated="false"
no manifesto.Testado no IceCream Sandwich
fonte
Basta usar estas linhas .....
E lembre-se de um ponto que sempre define a cor do plano de fundo após carregar os dados na visualização na web.
fonte
isso definitivamente funcionará .. definir plano de fundo em XML com Editbackground. Agora esse plano de fundo será mostrado
fonte
defina a BG após o carregamento do html (a partir de testes rápidos, parece que o carregamento do html redefine a cor da BG. isto é para 2.3).
se você estiver carregando o html dos dados que já obteve, basta fazer um .postDelayed no qual você acabou de definir o bg (por exemplo, transparente) é suficiente.
fonte
Se a visualização na web for rolável:
Adicione isso ao manifesto:
OU
Adicione o seguinte ao WebView no layout:
Adicione o seguinte à exibição de rolagem dos pais:
fonte
Tente webView.setBackgroundColor (Color.parseColor ("# EDEDED"));
fonte
Eu estava tentando colocar uma sobreposição HTML transparente na minha visão GL, mas ela sempre piscava em preto, cobrindo minha visão GL. Depois de vários dias tentando me livrar dessa tremulação, encontrei essa solução alternativa que é aceitável para mim (mas é uma pena para o Android).
O problema é que preciso de aceleração de hardware para minhas animações CSS agradáveis e, portanto,
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
não é uma opção para mim.O truque foi colocar um segundo (vazio)
WebView
entre a minha visão GL e a sobreposição HTML. IssodummyWebView
eu disse para renderizar no modo SW, e agora minhas sobreposições de HTML ficam suaves em HW e não mais tremeluzem em preto.Não sei se isso funciona em outros dispositivos além do My Acer Iconia A700, mas espero poder ajudar alguém com isso.
fonte
Isso funcionou para mim. tente definir a cor do plano de fundo após o carregamento dos dados. para esse setWebViewClient no seu objeto de visualização na web, como:
fonte
Tente:
fonte
Se nada ajudar, provavelmente você tem um tamanho fixo
webView
, altere a largura e a altura para wrap_content oumatch_parent
, deve funcionar. Isso funcionou para mim quando tentei carregar um GIF.fonte
Você pode usar o BindingAdapter como este:
Java
XML:
Recursos
fonte
é a melhor resposta. Funciona!
fonte