如何在Android TextView中显示“&”符号

42

我希望TextView中有一些简单的文本...

例如...(android & java)

这意味着我需要在textView中确切地使用 "and" 符号。

如果我在textView中提供android:text="Bakeries & Dessert",它会在xml中显示错误。

有人能建议我如何忽略特殊字符&、"等,并将它们放入我们的 TextView 文本中吗?

9个回答

62

43

使用这个:

   &lt; for < 
   &gt; for > 
   &amp; for &

示例:

  <string name="lessthan"> &lt; teste &gt;</string>
  <string name="link"> Puzzles &amp; code </string>

15

尝试使用代码设置文本

TextView tv = (TextView)findViewById(R.id.textview);
tv.setText("input");

使用HTML进行文本的编码/解码

Html.fromHtml(string) 

14

布局文件只是xml,&符号本身不允许使用。

你需要使用&代替&

这样做就可以了

  <string name="contest_giveaways" formatted="false">Contests &amp; Giveaways</string>

8

另一种解决方法是使用Unicode

  1. 在您的xml中将文本设置为

    android:text="@string/myNameHere"

  2. 在strings xml中添加以下行:

    <string name="myNameHere">bakeries \u0026amp; desserts</string>

完成!


6
只需按以下方式使用amp后跟分号进行编写:
android:text="Bakeries &amp; Dessert"

2

strings.xml中定义一个新的字符串,其值为“糕点和甜点”。

然后,在布局中声明:

<TextView android:text="@string/your_string_value"></TextView>

稍后编辑:

在另一个XML文件中添加无效的XML字符以规避限制显然行不通。但是,如果您使用Eclipse,在strings.xml中添加新值时,像&<>这样的字符将自动替换为HTML等效项(&amp; &lt; &gt;)。


这样做不起作用,因为strings.xml仍然是一个XML文件,并且"&"在XML中仍然是一个保留字符。如果您将声明移动到strings.xml,则仍需要使用XML转义序列。 - Mark Allison
你说得对,我没有足够注意。当我添加字符串时,Eclipse自动将&更改为&amp; - Gabriel Negut

2
布局文件是一个XML文件,对可使用的字符有一定限制。但是,您可以使用XML转义序列来显示在XML中具有特殊含义的字符。在本例中,将“Bakeries & Dessert”替换为字符串“Bakeries &amp; Dessert”,您应该会得到所需的行为。

但是如果&符号来自于我无法控制的数据库呢? - Martin

0

另一个简单而易用的替代方法是在string.xml中声明字符串,就像这样

例如

<string name="terms_amp_conditions"><![CDATA[Terms & Conditions]]></string>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接