【问题标题】:Changing text color in a WebView?更改 WebView 中的文本颜色?
【发布时间】:2010-11-18 07:19:15
【问题描述】:

有一种方法可以改变背景颜色而不是字体。
有什么想法吗?

【问题讨论】:

    标签: android webview


    【解决方案1】:

    类似

    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");
    

    【讨论】:

      【解决方案2】:

      我不得不把它放在 onPageFinished 方法中。

      _webView.setWebViewClient(new WebViewClient() {
          public void onPageFinished(WebView view, String url) {
              _webView.loadUrl(
                  "javascript:document.body.style.setProperty(\"color\", \"white\");"
              );
          }
      });
      

      【讨论】:

      • 部分工作,部分字体颜色仍未被覆盖
      【解决方案3】:

      我不确定我是否理解。 WebView 只显示您提供给它的 HTML,因此您只需使用普通的 HTML/CSS 来修改其中显示的内容。

      【讨论】:

      • 当然可以,但我想这样做而不修改底层 html。
      • 底层 HTML 是否来自第三方?您总是可以在最后注入 javascript 来修改它,然后从 Activity 本身调用 javascript 执行 wvMyWebView.loadUrl("call javascript function here");
      • @MattC 如果您更改应用主题并希望立即看到更改,该怎么办。
      【解决方案4】:

      这对我有用

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

      【讨论】:

        【解决方案5】:

        这是我找到的最简单的方法(例如将文本颜色更改为白色):

        webview.loadUrl("javascript:document.body.style.color=\"white\";");
        

        【讨论】:

        • 如何更改字体类型
        • 请注意,您必须为相关 Web 视图启用 javascript,否则调用将无效
        【解决方案6】:

        当缓冲区为 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);
        

        【讨论】:

          【解决方案7】:

          @rafraph 的回答对我不起作用。我不得不使用

          webView.loadUrl("javascript:document.body.style.setProperty(\"color\", \"white\");");
          

          【讨论】:

            【解决方案8】:

            您可以将您的答案连接到一个带有 CSS 样式十六进制颜色的正文标签 HTML,这是一个使用 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);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-06-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-03-14
              • 2012-11-27
              • 1970-01-01
              相关资源
              最近更新 更多