如何在字符串中插入换行符以在Android TextView小部件上显示?

时间:2014-04-20 00:56:41

标签: java android string textview

当我手动设置textView的字符串时,它可以正常工作。

<TextView
         android:id="@+id/textView1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="line 1 \n line 2"/>

但是,当我尝试在此textView上显示字符串时,它不会转到新行。

String sample = "line 1 \n line 2";
textView1.setText(sample);

注意:实际上我从SQLite数据库中获取String。但那不应该有所作为吗?因为它仍然是一个字符串!

sample = cursor.getString(DBAdapter.COL_sample);
textView1.setText(sample);

所以,现在我的TextView显示&#34; \ n&#34;或&#34; \ r \ n&#34;字符而不是换行符。

3 个答案:

答案 0 :(得分:3)

现在啊,因为你说它来自SQLite数据库,那就是问题所在。

您可以参考Blundell here的答案。

问题是SQLite会转义你的新行字符,所以当你再次检索它时,它会显示为\\\n或等效的,你需要 unescape 来正确显示(因此删除额外的斜杠,使它只是\n

因此,根据要保存到数据库中的新行字符,您需要相应地处理。

因此,使用链接的答案,您可以执行类似的操作(取决于您需要执行的反斜杠和其他字符的数量):

textView1.setText(sample.replaceAll("\\\\n", "\n"));

如果你需要在多个地方创建它,请为此创建一个函数。

答案 1 :(得分:1)

当您解压缩到strings.xml文件时它会起作用(您可以使用cmd + 1按钮快速执行此操作)。

这是一个修复,你将正确地抽象你的字符串作为奖金。

答案 2 :(得分:1)

你可以尝试

sample = sample.replace("\\\n", System.getProperty("line.separator"));