Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android WebView estilo background-color: transparente ignorado en android 2.2

Estoy luchando para crear un WebView con fondo transparente.

webView.setBackgroundColor(0x00FFFFFF); webView.setBackgroundDrawable(myDrawable); 

A continuación, cargar una página html con

  • Envío de puntuaciones a las tablas de clasificación con Google Play Game Services
  • Combinación de ListActivity y ActionBarActivity
  • 'Código fuente no coincide con el bytecode' al depurar en un dispositivo
  • ¿Existe una forma programática de detectar si la cámara tiene un zoom óptico?
  • ¿Cómo cambio el formato de fecha y hora en Android?
  • Error android.permission.WRITE_SECURE_SETTINGS
  •  <body style="background-color:transparent;" ... 

    El color de fondo del WebView es transparente, pero tan pronto como se carga la página, se sobrescribe por un fondo negro de la página html. Esto solo ocurre en android 2.2, funciona en android 2.1.

    Así que hay algo que añadir en el código de la página html para que sea realmente transparente?

  • Anuncio de vídeo premiado en Admob - Mediación no funciona
  • ¿por qué mi método de comparación arrojar excepción - método de comparación viola su contrato general!
  • ¿Por qué usar un Messenger en lugar de pasar la referencia a un Handler?
  • No se puede resolver el método maketext () de Toast
  • Error de SVN en eclipse con operación de borrado (aparentemente)
  • Códigos de error ADB
  • 18 Solutions collect form web for “Android WebView estilo background-color: transparente ignorado en android 2.2”

    Esto funcionó para mí,

     mWebView.setBackgroundColor(Color.TRANSPARENT); 

    En la parte inferior de esta cuestión mencionada anteriormente existe una solución. Es una combinación de 2 soluciones.

     webView.setBackgroundColor(Color.TRANSPARENT); webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 

    Al agregar este código al WebViewer después de cargar la url, funciona (API 11+).

    Incluso funciona cuando la aceleración del hardeware está activada

    Tuve el mismo problema con 2.2 y también en 2.3. He resuelto el problema dando el valor alpa en html no en android. He intentado muchas cosas y lo que he descubierto es setBackgroundColor(); El color no trabaja con el valor del alfa. webView.setBackgroundColor(Color.argb(128, 0, 0, 0)); no trabajará.

    Así que aquí está mi solución, trabajó para mí.

      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>"); 

    Y en Java,

      webView = (WebView) findViewById(R.id.webview); webView.setBackgroundColor(0); webView.loadData(webData, "text/html", "UTF-8"); 

    Y aquí está la captura de pantalla Salida siguiente. Introduzca aquí la descripción de la imagen

    En realidad es un error y nadie ha encontrado una solución hasta ahora. Se ha creado un problema. El insecto todavía está aquí en panal.

    Por favor, márquelo si cree que es importante: http://code.google.com/p/android/issues/detail?id=14749

    Así es como lo haces:

    En primer lugar, haga su base de proyectos en 11, pero en AndroidManifest establecer minSdkVersion a 8

    Android: hardwareAccelerated = "false" es innecesario, y es incompatible con 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); } }); 

    Para la seguridad poner esto en su estilo:

     BODY, HTML {background: transparent} 

    Trabajado para mí en 2.2 y 4

    Debajo del código funciona bien Android 3.0, pero cuando intenta este código debajo de Android 3.0, entonces su aplicación se cerró con fuerza.

     webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 

    Intentas debajo del código en tu API menos 11 .

     webview.setBackgroundColor(Color.parseColor("#919191")); 

    O

    Usted puede también intentar abajo del código que trabaja en toda la multa del API .

      webview.setBackgroundColor(Color.parseColor("#919191")); if (Build.VERSION.SDK_INT >= 11) { webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); } 

    Código arriba uso lleno para mí.

    Lo más importante no fue mencionado.

    El html debe tener una etiqueta de body con background-color definido como transparent .

    Así que la solución completa sería:

    HTML

      <body style="display: flex; background-color:transparent">some content</body> 

    Actividad

      WebView wv = (WebView) findViewById(R.id.webView); wv.setBackgroundColor(0); wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null); wv.loadUrl("file:///android_asset/myview.html"); 

    Siguiendo el código de trabajo para mí, aunque tengo múltiples webviews y el desplazamiento entre ellos es poco lento.

     v.setBackgroundColor(Color.TRANSPARENT); Paint p = new Paint(); v.setLayerType(LAYER_TYPE_SOFTWARE, p); 

    Pruebe webView.setBackgroundColor(0);

    • Después de probar todo lo anterior. Descubrí que no importa tampoco especificas
      webView.setBackgroundColor(Color.TRANSPARENT) antes o después de loadUrl() / loadData() .
    • Lo que importa es que deberías declarar explícitamente android:hardwareAccelerated="false" en el manifiesto.

    Probado en IceCream Sandwich

    Utilizar esta

     WebView myWebView = (WebView) findViewById(R.id.my_web); myWebView.setBackgroundColor(0); 
     webView.setBackgroundColor(0x00000000); webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 

    Esto definitivamente funcionará .. establecer el fondo en XML con Editbackground. Ahora que se mostrará el fondo

    Solo usa estas líneas

     webView.loadDataWithBaseURL(null,"Hello", "text/html", "utf-8", null); webView.setBackgroundColor(0x00000000); 

    Y recuerda un punto que siempre establece el color de fondo después de cargar los datos en la vista web.

    Si la vista web es desplazable:

    1. Añadir esto al Manifiesto:

       android:hardwareAccelerated="false" 

    O

    1. Agregue lo siguiente a WebView en el diseño:

       android:background="@android:color/transparent" android:layerType="software" 
    2. Agregue lo siguiente a la vista de desplazamiento de los padres:

       android:layerType="software" 

    Establecer el bg después de cargar el html (de pruebas rápidas que parece cargar el html restablece el color bg .. esto es para 2.3).

    Si usted está cargando el html de los datos que ya tiene, sólo hacer un .postDelayed en el que acaba de establecer el bg (por ejemplo, transparente) es suficiente ..

    Pruebe webView.setBackgroundColor (Color.parseColor ("# EDEDED"));

    Yo estaba tratando de poner una superposición de HTML transparente sobre mi vista GL, pero siempre tiene parpadeo negro que cubre mi vista GL. Después de varios días tratando de deshacerse de este parpadeo encontré esta solución que es aceptable para mí (pero una vergüenza para android).

    El problema es que necesito aceleración de hardware para mis animaciones CSS agradable y así webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); No es una opción para mí.

    El truco era poner un segundo (vacío) WebView entre mi vista GL y la superposición HTML. Este dummyWebView me dijo que para hacer en el modo SW, y ahora mis superposiciones HTML hace suave en HW y no más parpadeo negro.

    No sé si esto funciona en otros dispositivos que Mi Acer Iconia A700, pero espero poder ayudar a alguien con esto.

     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); } } 

    Esto funcionó para mí. Intente configurar el color de fondo después de cargar los datos. Para que setWebViewClient en su objeto de vista web como:

      webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); webView.setBackgroundColor(Color.BLACK); } }); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.