繁体   English   中英

有没有其他方法在Android TextView中显示Html代码而不使用webview和Html.fromHtml()方法?

[英]Is there any other way to display Html code in Android TextView without using webview and Html.fromHtml() method?

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

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

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

请参阅此链接 使用第三方库来改进本机TextView并支持更多HTML标记。 例如: HTML-TextView。

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

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

你可以称之为

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

你深入挖掘Html.fromHtml()是件好事。 但是只有这种方式可以使用html代码,并且为了更好的外观和布局,你可以像这样包装你的字符串文件。

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

或者只是你可以使用Webview。

此链接为您提供了此解决方案的正确答案,而不使用Web视图,并且它还支持更多html标记,如表格,图像和列表。

Android的summernote

我发现这个教程,你可以使用HTML和CSS与TextView中不使用的WebView,但你必须使用Html.fromHtml如下,你也应该使用Spanned

试一下!!

Android-Spannable Info请参阅此处

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM