【问题标题】:Is there any other way to display Html code in Android TextView without using webview and Html.fromHtml() method?有没有其他方法可以在不使用 webview 和 Html.fromHtml() 方法的情况下在 Android TextView 中显示 Html 代码?
【发布时间】:2017-04-08 19:42:56
【问题描述】:

我搜索了很多。我必须在 Textview 中显示 Html 代码。但主要是在 Textview 中使用 Html.fromHtml(source)。但是这种方法并不支持所有的 html 标签。 Html.fromHtml() 仅支持少数标签。

因为我需要应用所有 css 和所有 html 标签支持。

我想在不使用 Webview 的情况下在 Textview 中显示 html 代码。有没有其他方法可以实现这个功能。

【问题讨论】:

  • 最佳选择使用webview ...但正如您所说您不想使用webview ...有什么具体原因吗??
  • 如果您不想使用WebView,您可能需要为Html.fromHtml() 中不支持的标签编写支持。查看this 和this 的答案了解更多详情。
  • 因为 webview 仅用于显示。我想在 html 编辑器中更新一些 textx。这就是我问的原因
  • @rajeshlawrance 您是否正在寻找要包含在您的应用中的 html 编辑器?
  • 是的。我想使用

标签: java android html


【解决方案1】:

请参阅此link。使用改进原生 TextView 并支持更多 HTML 标签的 3rd 方库。例如:HTML-TextView.

【讨论】:

    【解决方案2】:

    是的,你可以 display ,但在这种情况下,你必须实现 HTMLTagHandler 来呈现你的标签(因为 Html.fromHtml() 方法只支持少数标签)和 ImageGetter 来显示你的图像。我已经创建了一个示例项目,请查看here。

    • public class HtmlTagHandler implements Html.TagHandler {}
    • public final class GlideImageGetter implements Html.ImageGetter{}

    你可以称之为

    Html.fromHtml(htmlText, new GlideImageGetter(webViewReferenceObj, 
    (AppCompatActivity) mContext), new HtmlTagHandler())
    

    【讨论】:

      【解决方案3】:

      很高兴您正在深入研究 Html.fromHtml()。但是只有这种方式可以使用 html 代码,并且为了更好的外观和布局,您可以像这样包装您的字符串文件。

      <string><![CDATA[<html>YOUR STRING FILE</html>]></string>
      

      或者你可以简单地使用 Webview。

      【讨论】:

        【解决方案4】:

        此链接在不使用网络的情况下为您提供此解决方案的正确答案 视图,还支持更多的html标签,如table、image和list。

        android-summernote

        【讨论】:

          【解决方案5】:

          我找到了本教程,您可以在不使用 WebView 的情况下将 HTML 和 CSS 与 TextView 一起使用,但您必须使用 Html.fromHtml,如下所示,您还应该使用 Spanned

          试一试!!

          Android-Spannable Info Refer here

          public class MainActivity extends ActionBarActivity {
              private TextView textView;
              private final String htmlWithCSS = "<!DOCTYPE html>\n" +
                      "<html>\n" +
                      "<head>\n" +
                      "<style>\n" +
                      "a1 {\n" +
                      "    text-decoration: overline;\n" +
                      "}\n" +
                      "\n" +
                      "a2 {\n" +
                      "    text-decoration: line-through;\n" +
                      "}\n" +
                      "\n" +
                      "a3 {\n" +
                      "    text-decoration: underline;\n" +
                      "}\n" +
                      "</style>\n" +
                      "</head>\n" +
                      "<body>\n" +
                      "\n" +
                      "<a1>This is heading 1</a1>\n" +
                      "<a2>This is heading 2</a2>\n" +
                      "<a3>This is heading 3</a3>\n" +
                      "\n" +
                      "</body>\n" +
                      "</html>\n";
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
                  textView = ((CustomTextView) findViewById(R.id.text_view));
                  Spanned spanned = Html.fromHtml(htmlWithCSS);
                  textView.setText(spanned);
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2014-03-22
            • 1970-01-01
            • 2018-11-25
            • 2018-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多