Mar*_*ver 22 string resources android textview
我有一个名为"foo"的字符串资源.它可能是一个简单的字符串......或者它可能包含HTML.这可能会随着时间的推移而改变:我应该能够在读取它是否为HTML时立即将其设置为至少一个SpannableString(但是如何?)
我希望得到原始的CharSequence,并且首先能够按原样显示它(确切的字符,而不是Android的"解释").现在我不能这样做... toString()决定撕掉它不认为我想看到的部分.
然后,我希望能够通过使用某种方法(没有正常的方法工作)通过串联从此和其他字符串或SpannableStrings创建SpannableString.我想使用SpannableString在TextView中显示HTML格式的文本.
这应该不难,但显然我做得不对(到目前为止我发现的关于此的信息很少).当然有一种方法可以在Strings,SpannedStrings甚至Spannablestrings之间准确地进行转换,而不会丢失沿途的标记?
请注意,我已经玩过一些有点破碎的Linkify,但是我想要更好地控制这个过程(没有悬挂的未格式化的"/",正确的hrefs等)我可以让这一切都工作如果我依旧保持HTML步骤,虽然我无法连接任何东西.
编辑1:我已经知道我可以使用以下内容来始终确保我得到我的原始字符串(而不是Android决定它认为CharSequence真的是什么).很好......现在,如何将其引入SpannableString?
<string name="foo"><![CDATA[
<b>Some bold</b>
]]>
</string>
Run Code Online (Sandbox Code Playgroud)
编辑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));
Run Code Online (Sandbox Code Playgroud)
好奇:有没有比这更简单的解决方案?这个CDATA业务真的有必要吗?这似乎是错综复杂的(但并不像从未完全知道什么是资源类型那样复杂......字符串,跨越等等)
归档时间: |
|
查看次数: |
12937 次 |
最近记录: |