2011-04-10 27 views
7

Estoy trabajando en una aplicación de Android, que carga una página HTML y la muestra en una vista web. El problema es que quiero agregar mi css personalizado (el HTML cargado no tiene ningún CSS o enlace a un css). ¿Cómo agrego el CSS personalizado al código HTML usando jsoup? No puedo modificar el html. ¿Y cómo puede la vista web abrirla después? GraciasAgregar css personalizado al código html con jsoup

+0

No es una pregunta idéntica. No puedo cargarlo con loadDataWithBaseURL porque no hay ningún enlace a un ccs en el HTML. Entonces no puedo referirme a un CSS en la aplicación local. – PixelPW

Respuesta

16

varias maneras. Puede usar Element#append() para agregar algo de HTML al elemento.

Document document = Jsoup.connect(url).get(); 
Element head = document.head(); 
head.append("<link rel=\"stylesheet\" href=\"http://example.com/your.css\">"); 

O bien, use Element#attr(name, value) para agregar atributos a los elementos existentes. Aquí hay un ejemplo que agrega style="color:pink;" a todos los enlaces.

Document document = Jsoup.connect(url).get(); 
Elements links = document.select("a"); 
links.attr("style", "color:pink;"); 

De cualquier manera, después de la modificación, obtenga la cadena HTML final por Document#html().

String html = document.html(); 

escribirlo en un archivo por PrintWriter#write() (con el juego de caracteres derecha).

String charset = Jsoup.connect(url).response().charset(); 
// ... 
Writer writer = new PrintWriter("/file.html", charset); 
writer.write(html); 
writer.close(); 

Finalmente, ábralo en la vista web. Como no puedo decirlo desde el principio, aquí hay un enlace con un ejemplo que creo que es útil: WebViewDemo.java. Por cierto, encontré el enlace en this blog (que a su vez encontré en Google).

+0

¿Cuál es el juego de caracteres correcto? ¿Qué tengo que poner ahí "// ..."? – PixelPW

+0

El juego de caracteres correcto es 'Jsoup.connect (url) .response(). Charset();'. El '// ...' es solo el código que necesitas para obtener el 'html'. – BalusC

+0

Gracias pero cuando pongo esto a Eclipse que dice: "Agregar lanza decleration" ... public void main (String ... args) throws FileNotFoundException, UnsupportedEncodingException {try { ... Lo que tengo ¿que hacer? – PixelPW

3

Probablemente la manera más fácil es buscar y reemplazar en el texto HTML para insertar sus estilos personalizados, antes de cargarlo en su WebView. Hago esto en mi aplicación BBC News para cambiar ligeramente la página del artículo de noticias. Mi código es el siguiente:.

text = text.replace("</head>", 
     "<style>h1 {font-size: x-large;} h1, div.date, div.storybody, img {margin:4px; padding:4px; line-height:1.25;}</style></head>"); 

ver cómo buscar y reemplazar en la etiqueta final head (incluyendo mi propia </head> etiqueta en el segmento reemplazado Esto asegura que el nuevo fragmento va en el ritmo adecuado en la página.

1

Hay aa pocas maneras de incluir la CAC en html

Tis yo uso si lo tiene almacenado como un archivo externo:

<head><link rel="stylesheet" type="text/css" href="mystyle.css" /></head> 

Si usted quiere ponerlo stight i el archivo html:

<head> 
<style type="text/css"> 
hr {color:sienna;} 
p {margin-left:20px;} 
body {background-image:url("images/back40.gif");} 
</style> 
</head> 

O si lo wnat modificar una etiqueta de Singel:

<p style="color:sienna;margin-left:20px">This is a paragraph.</p> 

* Editar

cualquiera de los ejemplos Thees shouldn no tiene ningún problema con la visualización.

Ref: W3 Schools CSS

+0

El problema es que cargo el formulario HTML de una página web, por lo que no puedo cambiar el HTML. Quiero agregar código con jsoup y luego cargar mi propio css. – PixelPW

+1

Veo, su pregunta fue engañosa, sonaba como si tuviera control sobre el html. Edité la pregunta para señalar a los demás de la manera correcta. Yo mismo no tengo ningún exp. whit jsoup – KilledKenny

Cuestiones relacionadas