我正在开发一款Android应用程序,该应用程序加载HTML页面并在Webview中显示该页面。问题是我想添加自定义CSS样式表(加载的HTML没有任何CSS或链接到CSS)。如何使用jsoup向HTML代码添加自定义CSS?而我又不能修改HTML代码。那么Webview如何在之后打开它呢?谢谢。
有几种方法。你可以使用 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;");
无论如何,修改后通过Document#html()
获取最终的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。顺便说一下,我是通过谷歌搜索找到了这篇博客,而在博客里找到了那个链接。
throws IOException
或将其放入 try-catch 中。您是否探索了 Eclipse 在单击红色圆点时提供的建议? - BalusC public void onCreate(Bundle savedInstanceState) {
main();
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webView);
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.loadUrl("file:///android_asset/file.html");
- PixelPW可能最简单的方法是在将HTML文本加载到您的WebView
之前,在HTML文本上进行搜索和替换以插入您的自定义样式。我在我的BBC新闻应用程序中这样做,稍微重新设计了新闻文章页面。我的代码如下:
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中包含CSS有几种方法
如果你将CSS存储为外部文件,可以使用以下方法:
<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>
*编辑
这些示例任何一个都不应该出现显示问题。