Подтвердить что ты не робот

WebView, добавить локальный файл .CSS на HTML-страницу?

В android я использую WebView для отображения части веб-страницы, которую я вытащил из Интернета с помощью HttpClient из Apache. Чтобы получить только часть, которую я хочу получить из html, я использую Jsoup.

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

Теперь я могу просто загрузить tables.toString() в WebView и отобразить. Теперь я хочу связать файл CSS, который я храню в своей папке с этой страницей. Я знаю, что у меня есть что-то вроде

<LINK href="styles/file.css" type="text/css" rel="stylesheet">   

В моем html, но как я могу связать его так, что он использует тот, который я сохранил локально?

--- EDIT ---
Теперь я изменил это:

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();

Как-то я не получаю стили, применяемые к странице. Является ли это путь местоположения, который я использовал, это неправильно? пожалуйста, помогите мне..

4b9b3361

Ответ 1

Сева Алексеев прав, вы должны хранить файлы CSS в папке assets, но ссылка на file:///android_asset/filename.css URL не работает для меня.

Есть еще одно решение: поместите CSS в папку assets, сделайте свои манипуляции с HTML, но обратитесь к CSS по относительному пути и загрузите HTML в WebView с помощью loadDataWithBaseURL():

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);

P.S. Я пришел к этому решению благодаря Питеру Кнего.

Ответ 2

Вы не можете хранить произвольные файлы в res - только определенные типы ресурсов (чертежи, макеты и т.д.). CSS должен перейти в папку assets. Затем вы можете обратиться к нему по следующему URL-адресу: file:///android_asset/MyStyle.css

Ответ 3

В соответствующем примечании, если вы не храните файл в папке с ресурсами и хотите использовать относительные пути, Webview на Android иногда требует точечной косой черты перед относительными путями.

<LINK href="./styles/file.css" type="text/css" rel="stylesheet">

См. этот пост