[英]How do I insert a line break in a String to show on an Android TextView widget?
当我像下面手动设置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”字符而不是换行符。
啊,因为你说它来自SQLite数据库,那就是问题所在。
您可以在这里参考Blundell的答案。
问题是SQLite将转义你的新行字符,所以当你再次检索它时,它会以\\\\\\n
或等效的形式出现,你需要unescape才能正常显示(所以删除额外的斜线以便它只是\\n
。
因此,根据要保存到数据库中的新行字符,您需要相应地处理。
因此,使用链接的答案,您可以执行类似的操作(取决于您需要执行的反斜杠和其他字符的数量):
textView1.setText(sample.replaceAll("\\\\n", "\n"));
如果您需要在多个位置执行此操作,请为此创建一个函数。
当您解压缩到strings.xml文件时它会起作用(您可以使用cmd + 1按钮快速执行此操作)。
这是一个修复,你将正确地抽象你的字符串作为奖励。
你可以试试
sample = sample.replace("\\\n", System.getProperty("line.separator"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.