Изменение цвета текста в WebView? - PullRequest
18 голосов
/ 10 августа 2009

Существует метод для изменения цвета фона, но не шрифта.
Есть идеи?

Ответы [ 8 ]

29 голосов
/ 17 июня 2012

что-то вроде

String text = "<html><head>"
          + "<style type=\"text/css\">body{color: #fff; background-color: #000;}"
          + "</style></head>"
          + "<body>"                          
          + your_string_text_here
          + "</body></html>";

webview1.loadData(text, "text/html", "utf-8");
9 голосов
/ 05 июня 2016

Мне пришлось поместить его в метод onPageFinished.

_webView.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView view, String url) {
        _webView.loadUrl(
            "javascript:document.body.style.setProperty(\"color\", \"white\");"
        );
    }
});
8 голосов
/ 10 августа 2009

Я не уверен, что понимаю. WebView отображает только тот HTML-код, который вы ему предоставляете, так что вы просто используете обычный HTML / CSS для изменения содержимого, отображаемого внутри.

5 голосов
/ 23 января 2014

Это самый простой способ, который я нашел (например, измените цвет текста на белый):

webview.loadUrl("javascript:document.body.style.color=\"white\";");
3 голосов
/ 05 апреля 2017

Это сработало для меня

myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
    view.loadUrl(
        "javascript:document.body.style.setProperty(\"color\", \"white\");"
    );
  }
});
2 голосов
/ 21 декабря 2015

@ Ответ Рафрафа не сработал для меня. Я должен был использовать

webView.loadUrl("javascript:document.body.style.setProperty(\"color\", \"white\");");
2 голосов
/ 19 марта 2011

Когда буфер SPANNABLE, изменение HTML напрямую является идеальным решением. Шрифт, цвет, шрифт, стиль могут быть затронуты через HTML:

String szMessage = "<font face='trebuchet' size=30><a href=zz><b>click me</b></a></font>";

TextView tv = (TextView)findViewById(R.id.tv_message);
tv.setText(Html.fromHtml(szMessage), BufferType.SPANNABLE);
1 голос
/ 04 ноября 2016

Вы можете объединить свой ответ одним тегом тела HTML с шестнадцатеричным цветом стиля CSS, это пример использования ответа JSON

Первое: функция для декодирования JSON в формат HTML

public String stripHtml(String html) {
    return Html.fromHtml(html).toString();
}

Второй: загрузка данных в WebView (без URL)

 String string_html;
 string_html = "&lt;body style=&quot;color:#535362;&quot;&gt;" + youStringHTML + "&lt;/body&gt;";
 webView.loadDataWithBaseURL(null, stripHtml(string_html), "text/html", "utf-8", null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...