一尘不染

从XML中的html格式的字符串资源设置TextView文本

html

我内部有一些固定的字符串strings.xml,例如:

<resources>
    <string name="somestring">
        <B>Title</B><BR/>
        Content
    </string>
</resources>

在我的布局中TextView,我想用html格式的字符串填充。

<TextView android:id="@+id/formattedtext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/htmlstring"/>

如果执行此操作,则的内容formattedtext只是somestring剥离所有html标记的内容,因此未格式化。

我知道可以通过编程方式设置带格式的文本

.setText(Html.fromHtml(somestring));

因为我在程序的其他部分按预期使用它。

要调用此函数,我需要一个Activity,但是目前,我的布局只是纯XML中的一个或多或少的简单静态视图,我宁愿以这种方式保留它,从而免去了创建Activityjust设置某些对象的开销。文本。

我是否忽略了明显的东西?根本不可能吗?欢迎任何帮助或解决方法!


阅读 403

收藏
2020-05-10

共1个答案

一尘不染

以防万一有人找到它,还有一个更好的替代方法尚未记录(我在搜索了几个小时后绊了一下,最后在Android SDK本身的错误列表中找到了它)。您
CAN
包括在strings.xml中原始的HTML,只要你把它包装

<![CDATA[ ...raw html... ]]>

例:

<string name="nice_html">
<![CDATA[
<p>This is a html-formatted string with <b>bold</b> and <i>italic</i> text</p>
<p>This is another paragraph of the same string.</p>
]]>
</string>

然后,在您的代码中:

TextView foo = (TextView)findViewById(R.id.foo);
foo.setText(Html.fromHtml(getString(R.string.nice_html)));

恕我直言,这比使用:-)好几个数量级

2020-05-10