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


WebView, agrega el archivo .CSS local a una página HTML?

En android uso WebView para mostrar una parte de una página web que busqué de Internet usando HttpClient de Apache. Para tener sólo la parte que quiero del html, uso Jsoup.

String htmlString = EntityUtils.toString(entity4); // full html as a string Document htmlDoc = Jsoup.parse(htmlString); // .. as a Jsoup Document Elements tables = htmlDoc.getElementsByTag("table"); //important part 

Ahora puedo cargar tables.toString() en el WebView y se muestra. Ahora quiero vincular un archivo CSS que guardo dentro de mi carpeta de activos con esta página. Sé que puedo tener algo como

  • Android: ¿Qué debo hacer en lugar de usar una función obsoleta (getwidth ())?
  • Acciones personalizadas con intenciones implícitas entre aplicaciones
  • Realizar una pausa de actividad que no se reanuda después de volver a crear el método
  • Cómo depurar errores de diseño de CSS en Android
  • Android BroadcastReceiver onReceive Actualizar TextView en MainActivity
  • Intención FLAG_GRANT_READ_URI_PERMISSION Uso de FileProvider en Gingerbread
  •  <LINK href="styles/file.css" type="text/css" rel="stylesheet"> 

    En mi html, pero ¿cómo puedo vincularlo para que utiliza el que he almacenado localmente?

    —EDITAR—
    Ahora he cambiado a esto:

     StringBuilder sb = new StringBuilder(); sb.append("<HTML><HEAD><LINK href=\"file:///android_asset/htmlstyles_default.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>"); sb.append(tables.toString()); sb.append("</body></HTML>"); return sb.toString(); 

    De alguna manera no obtengo los estilos aplicados a la página. ¿Es la ruta de ubicación que usé que está mal? por favor, ayúdame ..

  • Configuración de valores y visualización de texto en Android Spinner
  • Mi listview no rellena el padre
  • Android ImageView - Obtener coordenadas de tap (clic) independientemente de la ubicación de desplazamiento o la escala de zoom
  • Limitar el número de líneas en TextView
  • Tipo de MIME para directorios en Android
  • Biblioteca VoIP para Android
  • 3 Solutions collect form web for “WebView, agrega el archivo .CSS local a una página HTML?”

    Seva Alekseyev tiene razón, debe almacenar archivos CSS en la carpeta de assets , pero la referencia por file:///android_asset/filename.css URL no funciona para mí.

    Hay otra solución: poner CSS en carpeta de assets , hacer su manipulación con HTML, pero hacer referencia a CSS por ruta relativa , y cargar HTML a WebView por loadDataWithBaseURL() método:

     webView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "utf-8", null); 

    Por ejemplo, tiene el archivo styles.css , póngalo en la carpeta assets , cree HTML y cargue:

     StringBuilder sb = new StringBuilder(); sb.append("<HTML><HEAD><LINK href=\"styles.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>"); sb.append(tables.toString()); sb.append("</body></HTML>"); webView.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html", "utf-8", null); 

    PS He llegado a esta solución gracias a la respuesta de Peter Knego .

    No puede almacenar archivos arbitrarios en res – sólo los tipos de recursos específicos (drawables, layouts, etc.). El CSS debe ir a la carpeta de assets lugar. A continuación, puede consultarlo en la siguiente URL: file:///android_asset/MyStyle.css

    En una nota relacionada, si no almacena el archivo en la carpeta de activos y desea utilizar rutas de acceso relativas, Webview en Android a veces requiere barra diagonal antes de rutas relativas.

     <LINK href="./styles/file.css" type="text/css" rel="stylesheet"> 

    Ver esta publicación

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.