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

Posted

技术标签:

【中文标题】字符串资源新行 /n 不可能?【英文标题】:String Resource new line /n not possible? 【发布时间】:2011-07-24 12:48:33 【问题描述】:

似乎无法在 XML 资源字符串中添加新行 /n。还有其他方法吗?

【问题讨论】:

你的意思是\n?你有例子吗? 应该是\n。为我工作 @anandtripathi,我回滚了您的编辑,因为它使答案变得毫无意义。 OP 错误地使用了 \n 而不是 /n,这是问题的本质。出于明显的原因,我们不应该更正 OP 的代码,而应该只更正问题主体 重建项目可能会有所帮助。 【参考方案1】:

使用黑斜线而不是正斜线。 \n

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

另外,如果您打算将字符串用作 html,您可以使用&amp;lt;br /&amp;gt; 换行(&amp;lt;br /&amp;gt;)

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

【讨论】:

在 strings.xml 中只接受 HTML 格式,所以 <br />是否提供了适当的解决方案 我想为像我这样因为 android Studio 而访问此页面的人提及一些事情。在 AS 中,当您使用 IDE 的工具提取字符串时,它会自动去除换行符。您可以手动将它们重新添加,它会正常工作。不知道为什么会这样。 \n 对我不起作用,既不改变行也不改变字符串有 /n 。你知道为什么吗 ?两者都没有进入工作,这在其他答案中说 似乎至少在翻译编辑器中您需要使用正斜杠,否则它将简单地将其解释为文字 \n。谈论一致的设计...... 只是最近的更新:\n/n 在 strings.xml 文件中都不起作用。 &amp;lt;br /&amp;gt; 也没有。但是,仅使用 &amp;lt;br /&amp;gt; 就可以完美地解决这个问题!我测试它们只是为了确保,&amp;lt;br /&amp;gt; 是唯一能按预期工作的!【参考方案2】:

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

在 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 中使用回车来查看列表或我拥有的任何多行字符串。我的两分钱。

【讨论】:

哦,这很有趣。感谢分享。另外,我觉得问这个问题像个白痴,但看起来它帮助了很多人。哈哈!! Android(至少当前版本)将两个连续的换行符视为一个空格。 github.com/paour/StringResourceTest【参考方案3】:

在我尝试下一个解决方案之后

添加\n 在其后添加\n,不带空格 使用"" 并在文本中按EnterEnter的文本 使用lines=2

解决我的是br标签

<string name="successfullyfeatured">successfully<br/> You are now a member</string>

更新

最可靠的解决方案是使用翻译编辑器编辑文本,它会为您处理新行

【讨论】:

对我来说只是在不同平台上的行为不同。【参考方案4】:

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

<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

【讨论】:

对我有用,但以防万一,记住当你像上面那样定义资源时,你应该避免使用Html.fromHtml。谢谢 用引号包裹多行字符串效果很好。比将\n 放在任何地方要好得多(这很快就会变得难以阅读和混淆)。不用说,但以防万一:如果您想在文本中使用文字引号,则必须对其进行转义:\"【参考方案5】:

在 Android Studio 中使用翻译编辑器时,只需单击右侧的图标(或在 Windows 上使用 Shift-Enter,在 MacOS 上使用 Alt/Option-Enter),然后使用 return 添加换行符。

这将在本地化的 strings.xml 中正确插入 \n

【讨论】:

非常感谢您的回答。 右侧没有图标,Shift-Enter 跳转到上面的下一个文本,至少在 ubuntu 上是这样。 更新了此按钮的位置信息。 在Android Studio翻译编辑器中,必须选择文本项,然后来到翻译编辑器窗口的底部,其中显示Key,默认值,翻译,然后单击值(用于编辑文本/内容),在此处按“Shift + Enter”,这将打开一个文本编辑窗口。在这里,您可以创建段落,因为它必须出现并保存。这将作为段落使用和显示。【参考方案6】:

在最新版本的 Android Studio 中,“\n”将被打印出来,除非整个字符串都包含在撇号中

例如:

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

【讨论】:

如何制作两条折线?【参考方案7】:

我尝试了两种选择,都高效且简单。

    我使用了&lt;br/&gt; HTML 标签
<string name="name_detail">
        Hey user. <br/>
        Enjoy a new shopping deal.!!
</string>
    在 strings.xml 的顶部添加一个编码行
<?xml version="1.0" encoding="utf-8"?>

并使用“\n”换行 示例

<string name="name_detail">
        Hey user.\n
        Enjoy a new shopping deal.!!
</string>

【讨论】:

【参考方案8】:

如果你把"\n"放在xml文件中的一个字符串中,它会被当作"\\n"

所以,我做到了:

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

然后我在屏幕上得到一个跳线

【讨论】:

仅在您使用向导添加字符串时发生。如果您编辑 xml 它可以工作 我也犯了这个错误。谢谢你的建议。但我只是自己纠正了\n的所有外表。 不是一个好的解决方案。您应该从资源中获取文本并直接使用它。如果您必须处理更多特殊字符怎么办?你也要为他们写更多的代码吗?如果你有边缘情况怎么办?【参考方案9】:

\n 后面不要加空格,否则不起作用。我不知道原因,但这个技巧对我很有效。

【讨论】:

【参考方案10】:

我刚遇到这个问题。 不适用于带有约束参数的TextView。添加android:lines="2" 似乎可以解决这个问题。

【讨论】:

【参考方案11】:

我试过了 1-顶字\n底字 2-顶部单词 ENTER 底部单词

没用 最后&lt;br/&gt; 在android studio 中为我工作

实际上使用它的正确方法是\n,尽管在构建应用程序之后可能会看到它完成。 只对设计有影响,对应用没有影响

<string name="available_balance">Available\nBalance</string> //Look good on the app and Available\nBalance in android studio
<string name="available_balance">Available<br/>Balance</string> //Look good in android studio and Available Balance on the App

【讨论】:

请分享一些代码示例,说明您是如何尝试以及如何解决的。 实际上正确的使用方法是\n,尽管在构建应用程序之后可以看到它已经完成。 只对设计有影响,对应用没有影响 Available\nBalance【参考方案12】:

终于,我找到了解决方案。 &lt;br/&gt; 仅用于设计,不适用于运行应用程序。\n 仅用于运行应用程序,不适用于设计 因此,如果您想同时获得两个结果,解决方案是同时使用两者。 像这样的

\n<br/>

例子:

Hello \n<br/>World.

设计模式下的结果: 你好\n 世界。

运行应用程序的结果: 你好 世界。

【讨论】:

你说你“终于”找到了解决方案,但是十多年前就提供了一个解决方案,并且得到了社区的广泛验证。您的解决方案添加了什么尚未在已接受的答案或其他 17 个答案中解决的问题?【参考方案13】:

非常简单,您只需输入\n 你想在你的字符串资源中换行的地方。

例如

String s = my string resource have \n line break here;

【讨论】:

如何制作两条折线? @jvargas \n\n 两个。 \n\n\n 三个。等等……【参考方案14】:

只需在您的 strings.xml 文件中使用“\n”,如下所示

<string name="relaxing_sounds">RELAXING\nSOUNDS</string>

即使它在布局上看起来不是 2 行,实际上它也是 2 行。首先你可以在翻译编辑器上查看

单击向下按钮,您将看到此图像

此外,如果您运行该应用程序,您会看到它写成两行。

【讨论】:

【参考方案15】:
\n tag worked in the strings.xml file

例如:

 <string name="hello">Hello World &amp;\nWelcome</string>

输出:

Hello World &
Welcome

注意:

确保不要在\n"前后添加空格 即使在您运行应用程序时它不会在 UI 的预览窗口中显示新行,它也会显示在下一行中。

【讨论】:

【参考方案16】:

要在设计选项卡和我使用的设备中查看换行符:

<br/><br/>\n\n

(到 2 条断线)

【讨论】:

【参考方案17】:

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

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

【讨论】:

【参考方案18】:

虽然对于那些使用反斜杠但仍然在他们的布局中看到 \n 的人来说,正斜杠仍然存在实际问题。

好吧,我起初也很困惑为什么 \n 在布局中不起作用,但似乎当您真正在 实际设备中看到该布局时,它会创建一个换行符,因此无需担心它在布局显示屏幕上显示的内容,您的换行符将在设备上完美运行。

【讨论】:

【参考方案19】:

迟到的答案,但我认为可能会对某人有所帮助。

您有时会在 android studio 的布局预览中的 textview 中看到 \n。 (但它就在那里)。请刷新布局。 或者将您的应用部署到真正的 Android 设备上,以查看 \n 实际在 android 字符串资源中运行。

【讨论】:

【参考方案20】:

你可以使用这种格式

<string name="test">
"This is
a new line"
</string>

【讨论】:

【参考方案21】:

您是否尝试将其关闭再打开?! 这是一个非常古老的问题,但似乎没有其他答案表明这一点。 可能是 android studio 上的布局预览没有正确显示 textView。 因此,您可以尝试退出 android studio 并再次启动它。 我想如果在计算机处于睡眠/休眠等状态时打开 android studio 可能会发生这种情况。 总之,值得一试。

【讨论】:

在完全重建之前,我的布局预览确实在按钮上显示了“SPEED\nDEPTH”。之后,我的按钮具有正确的两行标题。

以上是关于字符串资源新行 /n 不可能?的主要内容,如果未能解决你的问题,请参考以下文章

新行 (\n) 在 android 中不支持?

C ++从多行字符串中删除新行

html5 - 无法将`\n`格式化为渲染字符串中的新行[重复]

正则表达式与新行之间的内容不匹配 (\r\n)

Swift - JSON字符串打印\ n而不是新行

新行命令 (\n) 不适用于 Firebase Firestore 数据库字符串