换行字符\ñ不TextView的Andr​​oid的正确显示

我知道,如果你做这样的事情

myTextView.setText("This is on first line \n This is on second line");

然后,它会正常显示是这样的:

这是在第一线
这是第二行

当我字符串存储数据库,然后将其设置为它显示为这样的观点:

这是第一行\ n这个是第二行

下面是代码,我用它来从数据库中提取的字符串的行:

factView.setText(factsCursor.getString(MyDBAdapter.FACT_COLUMN));

我只是填充从一个文本文件,其中每行是一个新进入表,以便行看起来像这样的数据库,“这是第一行\ n这个是第二行”,它被存储为文本。

是否有一个原因,它是不显示\ n个字符是否正确? 它必须是是与在数据库中的字符串之中。 有什么建议么?

--------------解决方案-------------

由于Falmarri在他的评论说,当它被放入数据库中的字符串被转义。 你可以尝试和反向转义的字符串通过调用String s = unescape(stringFromDatabase)你把它在你面前TextView

作为一个方面说明,请确保您使用的是DatabaseUtils.sqlEscapeString()在任何类型的数据,将数据插入数据库时,它是从用户或未知多变的来源。 这将保护您免受错误和SQL注入攻击。

我发现这个问题Austyn马奥尼的答案是正确的,但这里有一个小的帮助:

private String unescape(String description) {
return description.replaceAll("\\\\n", "\\\n");
}

description是出自你的SQLite数据库的字符串

尝试\\n代替\n 如果它抛出一个异常到位的\ n不是使用换行符关键字....换行符是一个字符,ASCII码10; 它通常是一个字符串进入...,将成为你的目的... :)

"This is on first line"||x'0A'||"This is on second line"

||符连接字符串和x'0A'是一个转义换行符。

如果要插入的记录,你就必须更换每一个换行符用"||x'0A'||"如果你的字符串是双引号括起来)。 相比于其他asnswers这似乎笨拙。 但是,如果你的线是在单独的列这也适用于一个选择:

SELECT firstline||x'0A'||secondline FROM wherever;

我发现这虽然有同样的问题,你是:http://www.mail-archive.com/sqlite-users@sqlite.org/msg43557.html

文本区可以在多行或单行模式。 当它处于单行模式换行字符“\ N'将被视为空格。 如果有疑问,可切换多行模式上,你可以使用下面的代码:

setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_MULTI_LINE);

我有问题,即,相同的代码没有关于蜂窝和升级Froyo,这似乎有不同的默认值工作。 我现在也排除了标志,当我想强制字段设置为单独的内衬。

从Android文档:

公共静态最终诠释TYPE_TEXT_FLAG_MULTI_LINE新增的API级别3

旗地为TYPE_CLASS_TEXT:多行文本可以输入到该领域。 如果该标志没有被设置,则文本字段将被约束为单线。 恒值:131072(0x00020000)

http://developer.android.com/reference/android/text/InputType.html#TYPE_TEXT_FLAG_MULTI_LINE

您必须在填写前场设置标志。

分类:机器人 时间:2015-03-15 人气:3
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.372 (s). 10 q(s)