12

我正在开发一个 Android 应用程序,它加载一个 HTML 页面并在 web 视图中显示它。问题是我想添加我的自定义 css(加载的 HTML 没有任何 CSS 或指向 css 的链接)。如何使用 jsoup 将自定义 css 添加到 HTML 代码中?我不能修改html。以及 webview 之后如何打开它?谢谢

4

3 回答 3

24

几种方式。您可以使用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顺便说一句,我在这个博客上找到了链接(我又被谷歌找到了)。

于 2011-04-10T23:32:27.143 回答
4

可能最简单的方法是在 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>在替换段中的标记。这可以确保新片段在页面上以正确的速度出现。

于 2011-04-10T20:10:00.880 回答
1

有几种方法可以在 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

于 2011-04-10T20:58:23.237 回答