Использование собственных стилей CSS и сценариев JS в Android WebViews
Android WebViews позволяет загружать пользовательский код CSS и JavaScript в содержимое загруженной веб-страницы.
Все, что вам нужно сделать, это переопределить onPageFinished функцию WebViewClient, которую вы предоставляете своему WebView, и вызвать loadUrl с вашим пользовательским кодом.
Лучший способ приблизиться к этому - создать соответствующие узлы JavaScript для вашего кода; узел style для CSS и узел script для JavaScript. Давайте сейчас напишем эти сценарии, ладно?
Следующий код JavaScript создает новый узел в модели DOM, содержащий предоставляемый нами стиль CSS.
var node = document.createElement('style');
node.type = 'text/css';
node.innerHTML = 'MY_CSS_STYLE';
document.head.appendChild(node);
Следующий код JavaScript создает новый узел в DOM, содержащий сценарий JS, который мы ему предоставляем.
var node = document.createElement('script');
node.type = 'text/javascript';
node.innerHTML = 'MY_JS_SCRIPT';
document.body.appendChild(node);
Чтобы заставить приведенный выше код работать и правильно создавать узлы после загрузки содержимого веб-страницы, нам нужно обернуть его самозапускающейся функцией JavaScript. Это тоже несложно.
javascript:(function() { MY_JS_CODE })()
Так как же объединить все вышеперечисленное и внедрить код в Android WebView?
Возвращаясь к функции onPageFinished реализации WebViewClient, давайте добавим очень простой стиль, который придаст Google темную тему; код находится в Kotlin с использованием многострочного строкового оператора.
override fun onPageFinished(view: WebView, url: String) {
val code = """javascript:(function() {
var node = document.createElement('style');
node.type = 'text/css';
node.innerHTML = 'body {
color: white;
background-color: black;
}';
document.head.appendChild(node);
})()""".trimIndent()
loadUrl(code)
}
Сделанный!

Вы можете найти вышеуказанные функции в аккуратной небольшой библиотеке, которую я разработал, под названием VeinView. Он объединяет все вышеперечисленное в настраиваемый WebView и настраиваемый клиент и позволяет загружать строковый код или RAW-ресурсы Android.
Счастливых праздников!