Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在字符串、跨距字符串和跨距字符串之间转换_Android_String_Resources_Textview - Fatal编程技术网

Android:在字符串、跨距字符串和跨距字符串之间转换

Android:在字符串、跨距字符串和跨距字符串之间转换,android,string,resources,textview,Android,String,Resources,Textview,我有一个名为“foo”的字符串资源。它可能是一个简单的字符串。。。或者它可能包含HTML。这可能会随着时间的推移而改变:我应该能够在阅读了它是否是HTML后立即将其包装为至少一个SpannableString(但如何?) 我想得到原始字符序列,并首先能够按原样显示它(确切的字符,而不是Android对它的“解释”)。现在我不能这么做。。。toString()决定撕掉它认为我不想看到的部分 然后,我希望能够从这个字符串和其他字符串中创建一个SpannableString,或者使用某种方法通过连接创

我有一个名为“foo”的字符串资源。它可能是一个简单的字符串。。。或者它可能包含HTML。这可能会随着时间的推移而改变:我应该能够在阅读了它是否是HTML后立即将其包装为至少一个SpannableString(但如何?

我想得到原始字符序列,并首先能够按原样显示它(确切的字符,而不是Android对它的“解释”)。现在我不能这么做。。。toString()决定撕掉它认为我不想看到的部分

然后,我希望能够从这个字符串和其他字符串中创建一个SpannableString,或者使用某种方法通过连接创建一个SpannableString(正常的方法都不起作用)。然后,我想使用该SpannableString在TextView中显示HTML格式的文本

这应该不难,但显然我做得不对(到目前为止,我发现的关于这方面的信息很少)确实有一种方法可以精确地在字符串、跨距字符串甚至跨距字符串之间进行转换,而不会丢失沿途的标记?

请注意,我已经使用了有点破损的Linkify,但我希望更好地控制这个过程(没有悬空的未格式化“/”s、正确的HREF等)。如果我在所有步骤都使用HTML,我可以让这一切正常工作,尽管我不能连接任何东西

编辑1:我学到了我可以使用以下方法来确保我得到了原始字符串(而不是Android认为CharSequence是什么)。美好的现在,如何把它哄成一个吊带

<string name="foo"><![CDATA[
    <b>Some bold</b>
]]>
</string>

好奇:还有比这更简单的解决方案吗?这项CDATA业务真的有必要吗?这看起来很复杂(但不像永远不知道资源类型会是什么样的复杂…字符串、可扩展等)。

似乎没有更直接的方法来实现这一点。

我也有同样的问题。根据具体情况,有两种解决方案


首先是逃避
,看起来你在这里回答了自己的问题。上面的foo1,foo2示例看起来不错。如果您没有其他具体问题,您应该回答您的问题,以便将其从未回答部分中删除。CDATA对于在XML中嵌入HTML是必要的,因为否则HTML元素将无法与封闭的XML区分开来。
String foo1 = (String)getResources().getText(R.string.foo1);
String foo2 = (String)getResources().getText(R.string.foo2);
SpannedString bar = new SpannedString(Html.fromHtml(foo1+foo2));