我有一个名为“foo”的字符串资源。它可能是一个简单的字符串…或者可能包含HTML。这可能会随着时间的推移而改变:我应该可以把它当作至少一个SpannableString来立即将它们看成是否是HTML(但是如何)
我想要获得那个原始的CharSequence,并且首先可以按原样显示(确切的字符,而不是Android的“解释”)。现在我不能这样做… toString()决定撕掉它不认为我想看到的部分。
然后,我想通过使用某种方法(没有一个正常工作)通过连接从这个和其他字符串或SpannableStrings创建一个SpannableString。我想使用SpannableString在TextView中显示HTML格式的文本。
这不应该是困难的,但显然我没有做到这一点(到目前为止我已经发现了很少的信息)。当然有一种方法可以准确地在Strings,SpannedStrings甚至Spannablestrings之间进行互换,而不会丢失标记。
请注意,我已经玩了一些有点破碎的Linkify,但是我想要更好地控制进程(没有悬挂未格式化的“/”,正确的hrefs等)我可以得到这一切工作,如果我保持在HTML中步骤,虽然我不能连接任何东西。
编辑1:我已经学会了我可以使用以下内容来始终确保我得到我的原始字符串(而不是Android决定它认为CharSequence真的是)。好,现在,如何把这个哄骗成一个SpannableString?
Some bold
]]>
编辑2:不知道为什么这不起作用,但是如果foo1和foo2是上面标记的字符串(如CDATA),那么可以明显地这样做:
String foo1 = (String)getResources().getText(R.string.foo1);
String foo2 = (String)getResources().getText(R.string.foo2);
SpannedString bar = new SpannedString(Html.fromHtml(foo1+foo2));
好奇:有没有比这更直接的解决方案?这个CDATA业务是否真的有必要?这似乎很复杂(但不是很复杂,因为从来不知道资源类型将是… String,Spannable等)