如何在Android TextView中添加换行符?

dro*_*ter 143 android line-breaks line textview

我试图在TextView中添加换行符.

我试过建议\n但是什么也没做.这是我设置文本的方式.

TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));
Run Code Online (Sandbox Code Playgroud)

这是我的字符串: <string name="sample_string">some test line 1 \n some test line 2</string>

它应该如此显示:

some test line 1
some test line 2
Run Code Online (Sandbox Code Playgroud)

但它表明如下:some test line 1 some test line 2.

我错过了什么吗?

小智 209

\n 对我有用,像这样:

<TextView android:text="First line\nNext line"
Run Code Online (Sandbox Code Playgroud)

  • 仅仅`\n`就可以了......不要以为`\ r``可以做任何事情. (87认同)
  • \ r \n它是Windows的换行符,\n是linux的换行符 (5认同)
  • '\r' 实际上在文本中显示为 'r'。因此,正如其他人建议的那样, '\n' 可以解决问题。 (2认同)

dro*_*ter 86

好吧想通了:

<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>
Run Code Online (Sandbox Code Playgroud)

所以在CDATA中包装是必要的,并且在html标签内部添加了break

  • 这需要使用`Html.fromHtml()`,这对于一个简单的换行符来说有点多,并且翻译提供商不支持。 (5认同)
  • 在字符串资源中使用这个&#xa; 喜欢"嗨!第一行!&#xa;这是第二行" (2认同)

Eri*_*OYÉ 67

Android 1.6版无法识别\ r \n.相反,使用:System.getProperty("line.separator")

String s = "Line 1"
           + System.getProperty ("line.separator")
           + "Line 2"
           + System.getProperty ("line.separator");
Run Code Online (Sandbox Code Playgroud)

  • 对于任何使用Xamarin的人来说,这都是等价的:Java.Lang.JavaSystem.LineSeparator() (3认同)
  • 为什么不简单地 System.lineSeparator() ? (3认同)
  • 给予好评!这对我有用!如果您只想在表单中添加换行符:textView.setText(string1 + System.getProperty("line.separator")+ string2); 然后它是一种享受,谢谢! (2认同)

dat*_*eah 58

当您将字符串资源值放在引号中时,换行符(\n)有效:

<string name="sample_string">"some test line 1 \n some test line 2"</string>
Run Code Online (Sandbox Code Playgroud)

如果你没有这样的引号,它不会做换行:

<string name="sample_string">some test line 1 \n some test line 2</string>
Run Code Online (Sandbox Code Playgroud)

是的,就这么简单.

  • 这不是真的.我的工作没有引号 (29认同)
  • 我只是想补充一点,这个引用的东西也适用于字符串资源中的特殊字符或者像希腊语或俄语这样的语言......(如果遇到任何问题) (2认同)

小智 30

试过以上所有,做了一些我自己的研究,得到了以下解决方案来渲染换行转义字符:

string = string.replace("\\\n", System.getProperty("line.separator"));
Run Code Online (Sandbox Code Playgroud)
  1. 使用替换方法,您需要过滤转义的换行符(例如'\\n')

  2. 只有这时换行'\n'转义字符的每个实例都会被渲染到实际的换行符中

在本例中,我使用了带有JSON格式数据的Google Apps Scripting noSQL数据库(ScriptDb).

干杯:D

  • +1.在我的情况下,我不得不删除\ s斜杠的e. (4认同)

Ani*_*dha 16

这对我有用

android:text="First \n Second"
Run Code Online (Sandbox Code Playgroud)

  • 您的示例看起来像是在布局资源中包含文本,这是一个很大的禁忌(不可能本地化)。 (2认同)

poi*_*oae 16

有两种方法可以解决这个问题.如果将字符串用作原始字符串,则需要使用换行符.如果你将它用作html,例如通过解析它Html.fromString,第二个变体更好.

1)换行符 \n

<string name="sample> This\nis a sample</string>
Run Code Online (Sandbox Code Playgroud)

2)Html换行标记<br><br />

<string name="sample> This<br>is a sample</string>
Run Code Online (Sandbox Code Playgroud)

  • 我没有关注它,但我认为你的代码是错误的,你需要"&lt; br>"而不是"<br>"它不会起作用,因为<是一个保留的符号. (6认同)

小智 15

这对我有用,也许有人会发现这有用:

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
Run Code Online (Sandbox Code Playgroud)


str*_*ark 9

如果您使用XML来声明TextView使用android:singleLine = "false"或在Java中使用,请使用txtSubTitle.setSingleLine(false);


Max*_*sky 9

二手Android Studio 0.8.9.对我有用的唯一方法是使用\n.与CDATA也无论是包装<br>还是<br />工作.


Car*_*ssy 8

我使用以下内容:

YOUR_TEXTVIEW.setText("Got some text \n another line");
Run Code Online (Sandbox Code Playgroud)


Ron*_*ers 8

很简单:使用"\n"

    String aString1 = "abcd";
    String aString2 = "1234";
    mSomeTextView.setText(aString1 + "\n" + aString2);
Run Code Online (Sandbox Code Playgroud)

\n对应于ASCII字符0xA,即"LF"或换行符

\ r \n对应于ASCII字符0xD,即'CR'或回车符

这可以追溯到第一台打字机,你可以选择只换行(并只键入一行),或换行+回车(也移动到行的开头)

在Android/java上,\n对应于回车符+换行符,否则只会"覆盖"同一行


小智 7

据我所知,在 android studio 的早期版本中使用单独的行“\n”代码。但新版本(4.1.2)使用“<br/”来分隔行。例如 - 旧的:

<string name="string_name">Sample text 1 \n Sample text 2 </string>
Run Code Online (Sandbox Code Playgroud)

新的一个:

<string name="string_name">Sample text 1 <br/> Sample text 2 </string>
Run Code Online (Sandbox Code Playgroud)


mob*_*lex 6

您也可以添加"&lt;br&#47;&gt;"而不是 \n。

它是 <br/> 的 HTML 转义代码

然后你可以向 TexView 添加文本:

articleTextView.setText(Html.fromHtml(textForTextView));
Run Code Online (Sandbox Code Playgroud)


Dr.*_*lov 6

尝试仔细检查您的本地化.可能,您尝试编辑一个文件(本地化),但实际上使用另一个文件进行编程,就像在我的情况下一样.默认的系统语言是俄语,而我试图编辑英语本地化.

就我而言,工作解决方案是使用"\n"作为行分隔符:

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>
Run Code Online (Sandbox Code Playgroud)