将HTML数据显示到Textview中创建问题

时间:2017-11-30 09:47:59

标签: android android-layout android-fragments textview

您好我正在尝试在textview中显示HTML数据。 HTML数据是对某些内容的描述,其中包括段落更改以及HTML中的标记。首先我使用的是HTML.fromhtml,但是当我运行我的应用程序时,没有行分隔符,因为您知道HTML.fromhtml会删除所有HTML标签。然后我简单地将所有替换为/ n。它工作得很好。但是,由于我没有使用HTML.fromhtml,因此未来可能会在我的textview中替换其他一些标记。如何解决这个问题?该怎么办?

这是HTML数据

Vanaf nu kan je hier - tegelijkertijd met Italië en dus zonder gevaar op 
spoilers - het derde, bloedstollende seizoen van Gomorra bekijken. Dit is 
uniek in de Benelux!\r\n<br><br>\r\nZes weken lang komen er elke zaterdag 
twee nieuwe afleveringen online.\r\nNa aankoop van dit derde seizoen krijg 
je toegang tot de beschikbare afleveringen en worden nieuwe afleveringen 
automatisch toegevoegd aan je account.\r\n <br><br>\r\nHoud dus alvast deze 
zaterdagen vrij, want maffia was nooit eerder zo verslavend.\r\n <br>
<br>\r\n18\/11\/2017 – aflevering 1 en 2<br> 25\/11\/2017 – aflevering 3 en 
4<br>02\/12\/2017 – aflevering 5 en 6<br>09\/12\/2017 – aflevering 7 en 
8<br>16\/12\/2017 – aflevering 9 en 10<br>23\/12\/2017 – aflevering 11 en 
12<br>\r\n <br>\r\nSeizoen 1 en 2 nog niet gezien? Geniet tot 30 november 
van een verlaagde prijs op beide seizoenen (slechts €9.99).<br>\r\nPrego!",

我在textview中使用setText这个方法。

 public static Spanned getTextViewTextFromApi(String input) {
    Spanned result;
    String text;
    String newline = System.getProperty("line.separator");
    text = "" + (input.replace("\\r\\n", newline).replace("\\n", newline));
    result = Html.fromHtml(text);
    return result;
}

2 个答案:

答案 0 :(得分:0)

android textiview不完全支持HTML所有标签视图。你可以使用这个LIBRARY。该库支持将设置为android textview的所有类型的HTML标记。

支持的HTML标记为:

<p>
<div> handled exactly like <p>
<br>
<b>
<i>
<strong> (bug on some Android versions: generates italic)
<em> (bug on some Android versions: generates bold)
<u>
<tt>
<dfn>
<sub>
<sup>
<blockquote>
<cite>
<big>
<small>
<font size="..." color="..." face="...">
<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
<a href="...">
<img src="...">

Extended support by HtmlTextView    
<ul>
<ol>
<li>
<code>
<center>
<strike>

希望它会对你有所帮助。

答案 1 :(得分:0)

 Spanned spanned;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {

        spanned = Html.fromHtml(mSampletext, Html.FROM_HTML_MODE_COMPACT);
    } else {

        spanned = Html.fromHtml(mSampletext);
    }
    System.getProperty("line.separator");
    Log.e("etagescaped", spanned+"") ;
    text.setText(spanned);


Answer: Vanaf nu kan je hier - tegelijkertijd met Italië en dus zonder gevaar op spoilers - het derde, bloedstollende seizoen van Gomorra bekijken. Dit is uniek in de Benelux! 

                                                            Zes weken lang komen er elke zaterdag twee nieuwe afleveringen online. Na aankoop van dit derde seizoen krijg je toegang tot de beschikbare afleveringen en worden nieuwe afleveringen automatisch toegevoegd aan je account. 

                                                            Houd dus alvast deze zaterdagen vrij, want maffia was nooit eerder zo verslavend. 

                                                            18/11/2017 – aflevering 1 en 2
                                                            25/11/2017 – aflevering 3 en 4
                                                            02/12/2017 – aflevering 5 en 6
                                                            09/12/2017 – aflevering 7 en 8
                                                            16/12/2017 – aflevering 9 en 10
                                                            23/12/2017 – aflevering 11 en 12

                                                            Seizoen 1 en 2 nog niet gezien? Geniet tot 30 november van een verlaagde prijs op beide seizoenen (slechts €9.99).
                                                            Prego!",

screenshot of the above code