我正在开发一个 Android 应用程序,它加载一个 HTML 页面并在 web 视图中显示它。问题是我想添加我的自定义 css(加载的 HTML 没有任何 CSS 或指向 css 的链接)。如何使用 jsoup 将自定义 css 添加到 HTML 代码中?我不能修改html。以及 webview 之后如何打开它?谢谢
3 回答
几种方式。您可以使用Element#append()
将一些 HTML 附加到元素。
Document document = Jsoup.connect(url).get();
Element head = document.head();
head.append("<link rel=\"stylesheet\" href=\"http://example.com/your.css\">");
或者,用于Element#attr(name, value)
向现有元素添加属性。这是一个添加style="color:pink;"
到所有链接的示例。
Document document = Jsoup.connect(url).get();
Elements links = document.select("a");
links.attr("style", "color:pink;");
无论哪种方式,修改后通过 . 获取最终的 HTML 字符串Document#html()
。
String html = document.html();
PrintWriter#write()
通过(使用正确的字符集)将其写入文件。
String charset = Jsoup.connect(url).response().charset();
// ...
Writer writer = new PrintWriter("/file.html", charset);
writer.write(html);
writer.close();
最后在webview中打开它。由于我无法从头顶上分辨出来,因此这里只是一个链接,其中包含一个我认为很有帮助的示例:WebViewDemo.java。顺便说一句,我在这个博客上找到了链接(我又被谷歌找到了)。
可能最简单的方法是在 HTML 文本上搜索和替换以插入您的自定义样式,然后再将其加载到您的WebView
. 我在我的应用程序 BBC News 中执行此操作,以稍微调整新闻文章页面的样式。我的代码如下所示:
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>");
看看我如何在结束head
标记上搜索和替换(包括我自己</head>
在替换段中的标记。这可以确保新片段在页面上以正确的速度出现。
有几种方法可以在 html 中包含 ccs
如果您将其存储为外部文件,我会使用它:
<head><link rel="stylesheet" type="text/css" href="mystyle.css" /></head>
如果你想把它放在 html 文件中:
<head>
<style type="text/css">
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("images/back40.gif");}
</style>
</head>
或者,如果您想修改单个标签:
<p style="color:sienna;margin-left:20px">This is a paragraph.</p>
*编辑
这些示例中的任何一个在显示时都不应该有任何问题。
参考:W3 学校 CSS