Android:strings.xml中的html

时间:2012-11-16 21:56:10

标签: android html xml string android-resources

我想显示例如这个HTML代码:

<body>
    <p><b>Hello World</b></p>
    <p>This is a test of the URL <a href="http://www.example.com"> Example</a></p>
    <p><b>This text is bold</b></p>
    <p><em>This text is emphasized</em></p>
    <p><code>This is computer output</code></p>
    <p>This is<sub> subscript</sub> and <sup>superscript</sup></p>
</body>

我希望通过在资源strings.xml中声明html来在Dialog上显示它。我该怎么办?

5 个答案:

答案 0 :(得分:198)

在strings.xml中添加html源代码的最佳方法是使用<![CDATA[html source code]]>。这是一个例子:

<string name="html"><![CDATA[<p>Text</p>]]></string> 

然后你可以使用:

在TextView中显示这个html
myTextView.setText(Html.fromHtml(getString(R.string.html)));

如果您的html中有链接,并且您希望它们可以点击,请使用以下方法:

myTextView.setMovementMethod(LinkMovementMethod.getInstance());

答案 1 :(得分:24)

以下是大多数示例。我认为不支持pre标记。

enter image description here

这是strings.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Formatting</string>
    <string name="link">&lt;b&gt;Hello World&lt;/b&gt; This is a test of the URL &lt;a href="http://www.example.com/"&gt;Example&lt;/a&gt;</string>
    <string name="bold">&lt;b&gt;This text is bold&lt;/b&gt;</string>
    <string name="emphasis">&lt;em&gt;This text is emphasized&lt;/em&gt;</string>
    <string name="sup">This is &lt;sub&gt;subscript&lt;/sub&gt; and &lt;sup&gt;superscript&lt;/sup&gt;</string>
</resources>

这是布局。注意实际可点击的链接,需要一些额外的工作:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/test1"
            android:linksClickable="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="12dp"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium"/>
        <TextView
            android:id="@+id/test2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="12dp"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium"/>
        <TextView
            android:id="@+id/test3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="12dp"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium"/>
        <TextView
            android:id="@+id/test4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="12dp"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium"/>
    </LinearLayout>
</ScrollView>

最后,代码:

TextView test1 = (TextView)findViewById(R.id.test1);
Spanned spanned = Html.fromHtml(getString(R.string.link));
test1.setMovementMethod(LinkMovementMethod.getInstance());
test1.setText(spanned);

TextView test2 = (TextView)findViewById(R.id.test2);
test2.setText(Html.fromHtml(getString(R.string.bold)));

TextView test3 = (TextView)findViewById(R.id.test3);
test3.setText(Html.fromHtml(getString(R.string.emphasis)));

TextView test4 = (TextView)findViewById(R.id.test4);
test4.setText(Html.fromHtml(getString(R.string.sup)));

答案 2 :(得分:4)

String.xml可以包含HTML实体,如下所示:

<resources>
    <string name="hello_world">&lt;span&gt;</string>
</resources>

在您的代码中:getResources().getString(R.string.hello_world);将评估为"<span>"。您可以使用此HTML格式的文本:

TextView helloWorld = (TextView)findViewById(R.id.hello_world);
helloWorld.setText(Html.fromHtml(getString(R.string.hello_world)));

答案 3 :(得分:3)

Android资源系统支持的所有样式都在Android文档中进行了解释。

String Resources: Formatting and Styling

可以在TextView上直接使用和设置任何内容。如果您需要使用更多HTML标记,则需要将原始HTML(包含&lt;&gt;的转义字符等)放入资源中,并将所有内容加载到WebView

答案 4 :(得分:2)

这对我有用:

import csv
file = input('csv files: ').split(',')
filters = input('Enter the filters: ').split(',')
f = open(csv_file,'r')
p=csv.reader(f)
header_eliminator = next(p,[])

<?xml version="1.0" encoding="utf-8"?>