是否有可能通过android上的textview显示纯HTML代码

时间:2016-11-18 09:50:02

标签: android html textview

我试图在我的Android应用上使用TextView显示HTML字符串。 我很好奇我怎样才能通过TextView以内联样式显示HTML。 出于某种原因,我们无法使用WebView进行此操作。 GitHub上有没有你知道它有效的存储库吗?

感谢您的帮助。

为了您的顾虑,我们需要在API 15上完美运行它。

2 个答案:

答案 0 :(得分:4)

您需要使用 Html.fromHtml()在您的textView中使用HTML作为文本

示例:

textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));

答案 1 :(得分:2)

我不记得我得到的消息来源,但我这样做了:

// get our html content
String htmlAsString = getString(R.string.html);
Spanned htmlAsSpanned = Html.fromHtml(htmlAsString); // used by TextView

// set the html content on the TextView
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(htmlAsSpanned);

xml文件上的html字符串:

<resources>
    <string name="app_name">TestProject2</string>

    <string name="html">
        <![CDATA[
        <h1>Main Title</h1>
        <h2>A sub-title</h2>
        <p>This is some html. Look, here\'s an <u>underline</u>.</p>
        <p>Look, this is <em>emphasized.</em> And here\'s some <b>bold</b>.</p>
        <p>This is a UL list:
        <ul>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        </ul>
        <p>This is an OL list:
        <ol>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        </ol>
        ]]>
    </string>
</resources>

在textview上定义:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              tools:context=".MainActivity"
              android:orientation="vertical"
              android:gravity="top|fill_vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <!--
    <WebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/webView"
        android:layout_below="@+id/helloWorld"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        />
    -->

</LinearLayout>

主要活动

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // get our html content
        String htmlAsString = getString(R.string.html);      // used by WebView
        Spanned htmlAsSpanned = Html.fromHtml(htmlAsString); // used by TextView

        // set the html content on a TextView
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(htmlAsSpanned);

//        WebView webView = (WebView) findViewById(R.id.webView);
//        webView.loadDataWithBaseURL(null, htmlAsString, "text/html", "utf-8", null);

    }

}