字符串资源新行 /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,您可以使用&lt;br /&gt;
换行(&lt;br /&gt;
)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Hello<br />World!</string>
</resources>
【讨论】:
在 strings.xml 中只接受 HTML 格式,所以 <br />是否提供了适当的解决方案 我想为像我这样因为 android Studio 而访问此页面的人提及一些事情。在 AS 中,当您使用 IDE 的工具提取字符串时,它会自动去除换行符。您可以手动将它们重新添加,它会正常工作。不知道为什么会这样。 \n 对我不起作用,既不改变行也不改变字符串有 /n 。你知道为什么吗 ?两者都没有进入工作,这在其他答案中说 似乎至少在翻译编辑器中您需要使用正斜杠,否则它将简单地将其解释为文字 \n。谈论一致的设计...... 只是最近的更新:\n
或 /n
在 strings.xml 文件中都不起作用。 &lt;br /&gt;
也没有。但是,仅使用 &lt;br /&gt;
就可以完美地解决这个问题!我测试它们只是为了确保,&lt;br /&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
,不带空格
使用""
并在文本中按Enter
按Enter的文本
使用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】:我尝试了两种选择,都高效且简单。
-
我使用了
<br/>
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 底部单词
没用
最后<br/>
在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,尽管在构建应用程序之后可以看到它已经完成。 只对设计有影响,对应用没有影响终于,我找到了解决方案。
<br/>
仅用于设计,不适用于运行应用程序。\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 &\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 不可能?的主要内容,如果未能解决你的问题,请参考以下文章