Android私は、WebViewを使用して、ApacheのHttpClientを使用してインターネットから取得したWebページの一部を表示しています。
_String htmlString = EntityUtils.toString(entity4); // full html as a string
Document htmlDoc = Jsoup.parse(htmlString); // .. as a Jsoup Document
Elements tables = htmlDoc.getElementsByTag("table"); //important part
_
これで、WebViewでloadtables.toString()
を実行するだけで表示されます。ここで、アセットフォルダー内に保存するCSSファイルをこのページにリンクします。私は次のようなものを持つことができることを知っています
_<LINK href="styles/file.css" type="text/css" rel="stylesheet">
_
私のhtmlでは、どうやってリンクすればローカルに保存したものを使うのでしょうか?
---編集---
これに変更しました:
_StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><LINK href=\"file:///Android_asset/htmlstyles_default.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
sb.append(tables.toString());
sb.append("</body></HTML>");
return sb.toString();
_
どういうわけか、ページにスタイルが適用されません。私が使用したロケーションパスは間違っていますか?私を助けてください ..
Seva Alekseyevは正しいです。CSSファイルをassets
フォルダーに保存する必要がありますが、_file:///Android_asset/filename.css
_ URLで参照しても機能しません。
別の解決策があります:CSSをassets
フォルダに入れ、HTMLで操作を行いますが、相対パスでCSSを参照し、ロードします loadDataWithBaseURL()
メソッドによるHTMLからWebViewへ:
_webView.loadDataWithBaseURL("file:///Android_asset/", htmlString, "text/html", "utf-8", null);
_
例えば。 _styles.css
_ファイルがあり、それをassets
フォルダーに配置し、HTMLを作成してロードします。
_StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><LINK href=\"styles.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
sb.append(tables.toString());
sb.append("</body></HTML>");
webView.loadDataWithBaseURL("file:///Android_asset/", sb.toString(), "text/html", "utf-8", null);
_
追伸 Peter Knegoの答え のおかげで、この解決策にたどり着きました。
任意のファイルをres
に保存することはできません-特定のリソースタイプ(ドローアブル、レイアウトなど)のみを保存できます。 CSSは、代わりにassets
フォルダーに移動する必要があります。その後、次のURLで参照できます:file:///Android_asset/MyStyle.css