12

HTMLページをロードしてWebビューに表示するAndroidアプリに取り組んでいます。問題は、カスタム css を追加したいことです (読み込まれた HTML には CSS または css へのリンクがありません)。jsoup を使用して HTML コードにカスタム css を追加するにはどうすればよいですか? 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ところで、このブログのリンクを見つけました(これは Google によって見つけられました)。

于 2011-04-10T23:32:27.143 に答える
4

おそらく最も簡単な方法は、HTMLテキストを検索して置換し、カスタムスタイルをにロードする前に挿入することWebViewです。私は自分のアプリBBCNewsでこれを行い、ニュース記事ページのスタイルを少し変更します。私のコードは次のようになります:

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 に cc を含める方法はいくつかあります

これは、外部ファイルとして保存している場合に使用します。

<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 Schools CSS

于 2011-04-10T20:58:23.237 に答える