Это старый и уже принятый вопрос, однако я уверен, что проблему можно решить более изящным способом с помощью javascript.
Сохраните html-файл в папке ваших ресурсов и окружите текст, на который вы хотите заменить, элементами div с уникальными идентификаторами.
<html>
<head> ... <head>
<body>
Static text
<div id="replace1">replace me</div>
<div id="replace2">replace me too</div>
More static text ...
</body>
</html>
Теперь создайте функцию javascript, которая заменит innerHtml элемента div на id :
function replace(id, newContent)
{
document.getElementById(id).innerHTML = newContent;
}
Эту функцию лучше всего разместить непосредственно в html-файле, обновите раздел <head>
, чтобы он выглядел следующим образом:
<head>
...
<script type="text/javascript">
function replace(id, newContent)
{
document.getElementById(id).innerHTML = newContent;
}
</script>
</head>
Теперь нам нужно вызвать функцию javascript из API WebView Android:
WebView helpView = (WebView)findViewById(R.id.helpView);
helpView.getSettings().setJavaScriptEnabled(true);
helpView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:replace('replace1', 'new content 1')");
view.loadUrl("javascript:replace('replace2', 'new content 2')");
}
});
helpView.loadUrl("file:///android_asset/help.html");
Используя это, вы избежите чтения потенциально больших данных в память и выполнения излишних дорогостоящих операций с ней.