字符串资源新行/ n不可能?


167

似乎不可能在/nXML资源字符串中添加新行。还有另一种方法吗?


12
你是说\ n?你有例子吗?
基思(Keith)

1
应该是\ n。为我工作
akash89

1
@anandtripathi,我回滚了您的修改,因为它使答案毫无意义。OP错误地使用\ n而不是/ n,这是问题的本质。我们不应该正确OP的代码,但唯一的问题是身体,为明显的葡萄干
维加

Answers:


382

使用反斜杠而不是正斜杠。 \n

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello\nWorld!</string>
</resources>

另外,如果您打算将字符串用作HTML,则可以使用&lt;br /&gt;换行符(<br />

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>

3
在strings.xml中,它仅接受HTML格式,因此&lt; br /&gt; 是提供的合适解决方案
akash89

我想为像我这样的人由于Android Studio访问此页面而提到一些东西。在AS中,使用IDE的工具提取字符串时,它会自动去除换行符。您可以手动将它们重新添加进去,这样就可以正常工作。不知道为什么这样做。
乔治·劳滕巴赫'18

\ n对我不起作用,也不要更改行或字符串都没有/ n的行。你知道为什么吗 ?在其他答案中
均未提及

52

我知道这是一个很老的问题,但是当我搜索时它就位居榜首。所以我想用另一种方法更新。

在strings.xml文件中,您可以执行\ n或只需按Enter键:

<string name="Your string name" > This is your string.

   This is the second line of your string.\n\n Third line of your string.</string>

这将在您的TextView上显示以下内容:

这是你的字符串。

这是字符串的第二行。

字符串的第三行。

这是因为在字符串的开始声明和新行之间有两次返回。为了清楚起见,我还添加了\ n,因为都可以使用。我喜欢使用xml中的回车符来查看列表或我拥有的任何多行字符串。我的两分钱。


3
哦,那很有趣。感谢分享。另外,我觉得自己是个白痴,想问这个问题,但看起来对很多人都有帮助。大声笑!!
Andi Jay

4
(至少是当前版本的)Android将两个连续的换行符视为一个空格。github.com/paour/StringResourceTest-Pierre-Luc Paour
2017年

19

这是一个老问题,但是我发现在创建这样的字符串时:

<string name="newline_test">My
New line test</string>

您应用中的输出将如下所示(无换行符)

My New line test

当您将字符串放在引号中时

<string name="newline_test">"My
New line test"</string>

换行将出现:

My 
New line test

1
为我工作,但以防万一,请记住,当您如上所述定义资源时,应避免使用Html.fromHtml。谢谢
艾哈迈德·雷扎

用引号将多行字符串包装起来效果很好。比放到\n任何地方都好得多(它很快就会变得不可读和混乱)。不用多说,但以防万一:如果您想在文本中添加文字引号,则必须将其转义:\"
Nolonar

4

如果将“ \ n”放在xml文件的字符串中,则将其视为“ \\ n”

所以我做了 :

text = text.Replace("\\\n", "\n");   ( text is taken from resX file) 

然后我在屏幕上跳了一行


3
仅在使用向导添加字符串时发生。如果编辑它的工作原理XML
丹尼尔·阿圭列斯

我也犯了这个错误。谢谢你的建议。但是我只是更正了\ n所有外观。
卡纳特

不是一个好的解决方案。您应该从资源中获取文本并直接使用。如果您必须处理更多特殊字符怎么办?您还要为他们编写更多代码吗?如果您有极端情况该怎么办?
dephinera

3

在Android Studio中使用翻译编辑器时,只需单击右侧的图标(或使用Shift-Enter),然后使用return添加换行符。这会将\ n正确插入本地化的strings.xml中。


非常感谢您的回答。
简单

2
右侧没有图标,并且Shift-Enter至少在ubuntu上跳到上面的下一个文本。
Tibor Nagy

3

在最新版本的Android Studio中,除非整个字符串都用单引号括起来,否则“ \ n”将被打印出来

例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>

如何制作两条折线?
jvargas


1

请勿在\ n后放置空格,否则将无法使用。我不知道原因,但是这个技巧对我来说非常有效。


0

我想扩展这个答案。他们的意思是这个图标:

编辑器窗口按钮

它打开一个“真实的编辑器窗口”,而不是大概览中功能有限的文本框。在该编辑器窗口中,允许特殊字符,换行符等,并在保存时将其转换为正确的xml“代码”


0

我只是面对这个问题。不适TextView用于约束参数。添加android:lines="2"似乎可以解决此问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.