首页 > 解决方案 > 转换列表到单个 SpannableString

问题描述

我有一个TextView接收SpannableString到它的TextFormatted财产。我想要构建它SpannableString的方式就像一个项目符号列表,如果某个项目满足某些条件,它的颜色就会改变,否则它仍然是默认的文本颜色;然后我将每个添加SpannableString到一个列表中,最后我将它们全部合并为一个SpannableString返回到TextView. 问题是我找不到办法。

我已经尝试添加 each SpannableString,但+操作员无法使用它们。我尝试过使用TextUtils.Concat(),但它们似乎不像在 Java 中那样工作 - 在 Java 中他们会同时接受stringStringFormatted,但在 Xamarin.Android 中他们只接受string.

标签: c#xamarin.android

解决方案


我发现,与 Xamarin.Android 具有TextView.TextFormatted将 aTextView的文本设置为格式化 ( Spannable) 文本的属性相同的方式,它也具有TextUtils.ConcatFormatted用于连接Spannable对象的 。有了它,我可以拥有:

var spans = new List<SpannableString>();
var someSpan = new SpannableString("Foo");
// Style someSpan as needed
spans.Add(someSpan);
var result = new SpannableString(TextUtils.ConcatFormatted(spans.ToArray()));

推荐阅读