Подгрузка css из кода при загрузке страницы webview
Программа написана на java и с изменением темы по кнопке проблем нет, однако другая часть приложения в webview. Нужно, чтобы если в SharedPrefs ключ theme установлен на 1, то грузить light.css и т.д
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Для сохранения данных в SharedPreferences будем записывать данные таким образом:
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putInt("id", 1);
editor.apply();
чтобы считать данные делаем так:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int my_id= sharedPref.getInt("id", defaultValue);
Для того чтобы добавлять тему в страницу при загрузке, добавляем код css и грузим страницу:
webView=(WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><LINK href=\"http://test.com/css/test.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
sb.append(attributes.toString());
sb.append("</body></HTML>");
webView.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8", null);
Второй вариант - предварительно загружаем содержимое сайта:
doc = Jsoup.connect("http://....").get();
убираем css который пришел:
doc.head().getElementsByTag("link").remove();
ставим css который нам нужен:
doc.head().appendElement("link").attr("rel", "stylesheet").attr("type", "text/css").attr("href", "style.css");
выгружаем получившийся html:
String htmldata = doc.outerHtml();
загружаем его в webview:
WebView webview = new WebView(this);
setContentView(webview);
webview.loadDataWithBaseURL("file:///android_asset/.", htmlData, "text/html", "UTF-8", null);