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


253

定义TextViewin时xml,如何向其中添加新行?\n似乎不起作用。

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

1
您的代码对我有用。您会得到什么而不是多行文字?
molnarm 2010年

2
在可视化编辑器中,它显示为文本\ n
Pentium10,2010年

Answers:


293

不要相信可视化编辑器。您的代码确实可以在does中工作。


好吧,以我为例,Visual编辑器在说实话。它添加了另一个反斜杠以显示反斜杠。正确的方法是将文本放在xml文件中。
dp2050

79

尝试:

android:lines="2"

\n 应该管用。


1
我的textview可能超过2行。它是一个控件。它几乎可以是任何东西。
dropOfJupiter


38

我认为这与您的HTM.fromHtml(subTitle)呼叫有关:“ \ n”并不意味着将HTML打包。尝试<br/>代替“ \ n”。


25
@androidevAlex那是因为它是<br/>,不是</br>
Ilya Kogan

21

首先,将其放在您的textview中:

android:maxLines="10"

然后\n在textview的文本中使用。

maxLines使TextView最多只有这么多行。您可以选择其他号码:)


19

尝试了以上所有方法,做了一些我自己的研究,得出以下用于呈现换行符转义字符的解决方案:

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

  2. 只有这样,每个换行符'\n'转义字符的实例才会呈现到实际的换行符中

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

干杯:D


1
这对我有用:replace(“ \\ n”,System.getProperty(“ line.separator”));
老虎机

而是string = string.replaceAll(“ \\\ n”,System.getProperty(“ line.separator”));
user846316

10
<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \r\n-Line2\r\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

我认为这会起作用。


8

我的2美分,使用Android TV。

\n在阅读时添加XML字符串:

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}

8

我只是解决了同样的问题,将以下属性放在xml中

android:lines="2" android:maxLines="4" android:singleLine="false"

工作。Html.fromHtml("text1 <br> text2").toString()也可以。


这仍然很重要,谢谢!我有maxLines,但没有singleLine = false。
blast_hardcheese

这是我唯一有效的解决方案。谢谢!
Silas


7

这解决了我的问题。

stringVar.replaceAll("\\\\n", "\\\n");


5

一种方法是使用Html标签::

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));

5

如果您进行调试,则将看到字符串实际上是"\ \r\ \n""\ \n",即已对其进行转义。因此,如果您按摩那根弦,以摆脱多余的肌肉\,您将拥有自己的解决方案。尤其是从数据库中读取时,这是正确的。


5

您需要将放置"\n"strings.xml文件中,而不放在页面布局内。


这对我
有用

4

需要保持

1。android:maxLines="no of lines"

2.并\n用于获取下一行


4

对我来说,解决方案是在布局中添加以下行:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    >

\ n在可视编辑器中显示为新行。希望能帮助到你!


1
我不确定这是否与问题有关:)
Suleyman,

我有一个同样的问题,字符串“ \ n”代替了新行而已。当我在上面添加该行之后,情况就消失了,新行出现了
Rob

1
也许是因为您使用的是OP,而tools:text不是android:text喜欢OP,但无论如何还是为您打扰而深感抱歉:)
Suleyman,

我想我应该把它android:text弄得更好一些,多亏了我现在所做的评论:)我认为这只是可视化编辑器的一个bug,就像接受者的答案所建议的那样,但是看到它更舒服:)
Rob

是的,我现在明白了,您说得对,它更舒服了:)谢谢
Suleyman

4

您也可以添加 &lt;br&gt;而不是\n.

然后可以将文本添加到TexView:

articleTextView.setText(Html.fromHtml(textForTextView));

不在XML中,您不能。它给出了编译错误- android:text不能包含<或>字符。
Timmmm 2012年

3

您需要放入\n文件string.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>

2
 android:text="Previous Line &#10; Next Line" 

这将起作用。


不,不是。
shazbot

<TextView android:layout_width =“ match_parent” android:layout_height =“ wrap_content” android:singleLine =“ false” android:text =“上一行&#10;新线” />您需要在模拟器中运行才能看到它的工作。谢谢
Viral Parmar '18

2

试一试:

Textview_name.settext("something \n  new line "):

在Java文件中。


3
请提供正确的问题答案,否则请使用评论
DjSh

1

RuDrA05的答案很好,当我在eclipse上编辑XML时不起作用,但是当我使用notepad ++编辑XML时它起作用。

如果我阅读用eclipse或notepad ++保存的txt文件,也会发生同样的事情

也许与编码有关。


1

这很好。检查它为您的应用程序。

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1\nText 2\nText 3"/>

1

旁注:使用大写字母

android:inputType="textCapCharacters"

或类似的东西似乎阻止了它\n的工作。


1

确保您正在使用your_package.R 而不是android.R




0

如果TextView在任何布局中(例如,LinearLayout),请尝试将方向属性更改为垂直 android:orientation="vertical"于布局,或更改TextView属性android:singleLine="true"以在其后创建新行。


0

编程方式:myTV.setText(“ My Text” +“ \ n” + myString);


0

在您的stings.xml中创建一个字符串

<resources>
    ...
    <string name="new_line">\u000A</string>
</resources>

然后在您的代码中引用字符串

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
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.