当我手动设置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;字符而不是换行符。
答案 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"));