繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM