Изменение цвета текста в WebView?

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


person yanchenko    schedule 10.08.2009    source источник


Ответы (8)


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

person MattC    schedule 10.08.2009
comment
Конечно, но я хотел бы сделать это без изменения базового html. - person yanchenko; 10.08.2009
comment
Является ли базовый HTML чем-то сторонним? Вы всегда можете ввести javascript в конце, который изменит его, а затем вызвать javascript из самого действия, выполнив wvMyWebView.loadUrl (здесь вызовите функцию javascript); - person MattC; 10.08.2009
comment
@MattC, что, если вы измените тему приложения и хотите сразу увидеть изменения. - person Faisal Shaikh; 08.07.2020

что-то типа

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");
person OWADVL    schedule 17.06.2012

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

_webView.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView view, String url) {
        _webView.loadUrl(
            "javascript:document.body.style.setProperty(\"color\", \"white\");"
        );
    }
});
person djunod    schedule 05.06.2016
comment
частично работает, некоторые цвета шрифта еще не перезаписаны - person Beeing Jk; 20.03.2018

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

myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
    view.loadUrl(
        "javascript:document.body.style.setProperty(\"color\", \"white\");"
    );
  }
});
person Ismail Iqbal    schedule 05.04.2017

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

webview.loadUrl("javascript:document.body.style.color=\"white\";");
person RefaelJan    schedule 23.01.2014
comment
как изменить тип шрифта - person Make it Simple; 15.07.2014
comment
обратите внимание, что вам нужно будет включить javascript для рассматриваемого веб-представления, иначе вызов не будет иметь никакого эффекта. - person sfera; 15.09.2014

Когда буфер 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);
person paiego    schedule 19.03.2011

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

webView.loadUrl("javascript:document.body.style.setProperty(\"color\", \"white\");");
person Jess Smith    schedule 20.12.2015

Вы можете объединить свой ответ с одним 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);
person Vladimir Salguero    schedule 03.11.2016