【问题标题】:How to add line break to a rtl string in strings.xml in Android?如何在Android中的strings.xml中为rtl字符串添加换行符?
【发布时间】:2017-09-09 10:03:24
【问题描述】:

我正在尝试通过将 strings.xml 文件添加到值目录并翻译所有英文字符串来将我的 android 应用程序从英语翻译成希伯来语。

我的问题是在希伯来语字符串中添加换行符 (\n) 就像我对英语 strings.xml 字符串所做的那样不起作用。带换行符的英文字符串示例:

<string name="no_group_instructions">You don\'t have a group yet!\n\nPlease choose whether to create a new group, or to join an existing one...</string>

如何在非英文字符串中添加换行符?

编辑

我最终确实设法使用 \n 在希伯来语字符串中进行换行。 我猜想从右到左书写,在 Android Studio 中没有得到足够好的支持,首先导致了这个问题。我通过将带有\n的字符串从记事本直接复制到strings.xml文件来解决它,而不是直接在Android Studio中编写。

【问题讨论】:

  • 它们是一样的\n它们在哪里不起作用?

标签: android xml line-breaks right-to-left hebrew


【解决方案1】:

我遇到了同样的问题。要解决它,只需像我一样将“\n”复制粘贴到您的字符串中:

&lt;string name="ta_tv_button_text"&gt;?היוםn\אכלתn\מה&lt;/string&gt;

确保在清单和 TextView 中都支持 RTL。

我无法将我的字符串复制粘贴到这里(它混淆了字符串)。我相信如果您尝试将其复制粘贴到您的项目中,它会再次混淆,所以不要将我的字符串复制粘贴到您的项目中。这就是字符串在我的项目中的样子。

【讨论】:

    【解决方案2】:

    有一种很酷的方法可以在运行时执行此操作。

     <string name="title">Testing%sNew Line, stand back!</string>
    

    %s 是一个字符串,可以替换。

    然后通过资源String word = String.format(Locale.English,getString(R.string.title),"\n")获取; 它将加载字符串,然后将 %s 替换为 \n

    【讨论】:

    • 哦,顺便选择你自己的Locale
    • 感谢@Remario,但我正在寻找一种在 strings.xml 文件中执行此操作的方法。
    • 但归根结底,你只想要字符串并不重要
    【解决方案3】:

    你必须使用&lt;br /&gt; 来换行而不是\n 例如:

    <string name="no_group_instructions">You don\'t have a group yet!
    <br/><br/>Please choose whether to create a new group, or to join an existing one...
    </string>
    

    【讨论】:

    • 先用英文试了一下,还是不行——两个句子刚刚合并。
    • @milyoav 我在图片中得到了这个结果,所以它打破了界限,它怎么不适合你,你想做什么?
    • 我不明白。您的图片显示代码而不是屏幕本身。当我添加
      标签而不是 \n 它被解释为空格而不是换行符...
    【解决方案4】:
      String formattedText = getString(R.string.no_group_instructions); 
    Spanned result = Html.fromHtml(formattedText); 
    view.setText(result); 
    

    【讨论】:

    • 使用 Html。 FromHtml()可以把字符串格式化成Html代码,这在\n中会有作用。
    • 谢谢,您能否编辑问题并添加信息。
    【解决方案5】:

    使用黑斜杠而不是正斜杠。 "\n"

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

    【讨论】:

    • 你把 "\n" 放在 xml 文件中的一个字符串中,它被当作 "\\n" 所以,我做了: text = text.Replace("\\n", "\n "); (文本取自 resX 文件)然后我在屏幕上得到一个跳线
    • \n 在英文字符串上工作得很好。我的问题是尝试在希伯来语字符串上使用 \n 时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2016-07-19
    • 2020-10-30
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多