当我像下面手动设置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时,它不会转到新行。

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

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

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

所以,现在我的TextView显示“\\ n”或“\\ r \\ n”字符而不是换行符。

===============>>#1 票数:4 已采纳

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

您可以在这里参考Blundell的答案。

问题是SQLite将转义你的新行字符,所以当你再次检索它时,它会以\\\\\\n或等效的形式出现,你需要unescape才能正常显示(所以删除额外的斜线以便它只是\\n

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

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

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

如果您需要在多个位置执行此操作,请为此创建一个函数。

===============>>#2 票数:1

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

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

===============>>#3 票数:1

你可以试试

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

  ask by AspiringDeveloper translate from so

未解决问题?本站智能推荐: