当前位置:  开发笔记 > 编程语言 > 正文

字符串资源中的HTML?

如何解决《字符串资源中的HTML?》经验,为你挑选了3个好方法。

我知道我可以将转义的HTML标记放在字符串资源中.但是,查看Contacts应用程序的源代码,我可以看到他们有一种不必编码HTML的方法.从Contacts应用程序strings.xml中引用:

Sync your Google contacts! 
\nAfter syncing to your phone, your contacts will be available to you wherever you go.

不幸的是,当我尝试类似的东西(比如Hello, World!)时,getString()返回没有标签的字符串(我可以看到logcat).这是为什么?如何获得带有标签和所有内容的原始字符串?联系人应用程序如何执行此操作?



1> Donn Felker..:

你也可以将你的html包围在CDATA块中,getString将返回你的实际HTML.像这样:

baz is cool]]>

现在当你执行getString(R.string.foo)时,字符串将是HTML.如果需要通过可点击的TextView呈现HTML(带有如图所示的链接),则需要执行Html.fromHtml(...)调用以获取可跨越文本.


@MarcoW.Felix的答案是正确的,但使用CDATA可以帮助我们不用担心html标签.这个答案应该是正确答案.
如果您在字符串中有链接,请不要忘记添加textView.setMovementMethod(LinkMovementMethod.getInstance());

2> Felix..:

它似乎getString()只是 - 得到一个字符串.要使用它,你必须使用getText()(而不是更多Html.fromHtml()),即:

mTextView.setText(getText(R.string.my_styled_text));

但是,看起来android:text属性也是一样的,以下是等价的:


并在strings.xml:

Hello, World!


请注意,只有支持的标签是,,:http://developer.android.com/guide/topics/resources/string-resource.html
@Snicolas:它支持的不仅仅是文档中提到的3个标签:它支持,,,,,,,,
  • ,,,(请参阅https://github.com/android/platform_frameworks_base/blob/android-4.2.2_r1/core/java/android/content/res /StringBlock.java#L161)
    你的意思是getText():)
    @pawegio肯定你的意思是`\n`?

    3> 小智..:

    最好的解决方案是以某种方式使用资源:

    Adults are spotted gold and black on the crown, back and wings. Their face and neck are black with a white border; they have a black breast and a dark rump. The legs are black.

    It is similar to two other golden plovers, Eurasian and Pacific.

    The American Golden Plover

    is smaller, slimmer and relatively longer-legged than Eurasian Golden Plover (Pluvialis apricaria) which also has white axillary (armpit) feathers. It is more similar to Pacific Golden Plover (Pluvialis fulva) with which it was once considered conspecific under the name \"Lesser Golden Plover\". The Pacific Golden Plover is slimmer than the American species, has a shorter primary projection, and longer legs, and is usually yellower on the back.

    These birds forage for food on tundra, fields, beaches and tidal flats, usually by sight. They eat insects and crustaceans, also berries.

    ]]>

    并显示它:

    Spanned sp = Html.fromHtml( getString(R.string.htmlsource));
    tv.setText(sp);
    

    尝试在没有和使用tv.setText的情况下使用该资源(getText(R.string.htmlsource)); 你会看到差异.

    推荐阅读
    落单鸟人
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有