Android WebView неправильно обрабатывает переводы строк в предварительно отформатированном тексте - PullRequest
15 голосов
/ 17 февраля 2011

Если я добавлю этот HTML в WebView:

<code>webView.loadData("<html><body><pre>line 1\nline 2
"," text / html "," utf-8 ");

itотображается как (в эмуляторе, а также на устройстве)

line 1line 2

в отличие от

line 1
line 2

, как и следовало ожидать. Если я сохраню этот HTML-код на SD-карту и открою файл вв браузере, он хорошо отрисовывается. Я полагаю, что я делаю что-то не так, или это может быть ошибкой. В любом случае, я хочу программно протолкнуть HTML с предварительно отформатированными символами новой строки в WebView и отрисовать символы новой строки.

Ответы [ 3 ]

19 голосов
/ 18 февраля 2011

Строка, переданная в loadData, должна быть экранирована URI.

Вы можете использовать URLEncoder.encode(), чтобы сделать это, но по какой-то причине WebView не декодирует '+' обратно в' '.Один из обходных путей - заменить все '+' на '%20' самостоятельно.

Например (и с переводом '+'):

<code>try {
    webview.loadData(URLEncoder.encode("<html><body><pre>line 1\nline 2
","utf-8 "). replaceAll (" \\ + ","% 20 ")," text / html "," utf-8 ");} catch (UnsupportedEncodingException uee) {Log.e (" webview "," ", ие);}
11 голосов
/ 14 сентября 2012

Попробуйте:

webView.loadDataWithBaseURL(...)

Подробнее здесь

2 голосов
/ 15 февраля 2014

Также вы можете использовать

chapterWebView.loadDataWithBaseURL("file:///android_asset/NTImages/", message.replaceAll("\\n", "<br/>") , "text/html", "utf-8", "utf-8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...