c# - 转换列表到单个 SpannableString
问题描述
我有一个TextView
接收SpannableString
到它的TextFormatted
财产。我想要构建它SpannableString
的方式就像一个项目符号列表,如果某个项目满足某些条件,它的颜色就会改变,否则它仍然是默认的文本颜色;然后我将每个添加SpannableString
到一个列表中,最后我将它们全部合并为一个SpannableString
返回到TextView
. 问题是我找不到办法。
我已经尝试添加 each SpannableString
,但+
操作员无法使用它们。我尝试过使用TextUtils.Concat()
,但它们似乎不像在 Java 中那样工作 - 在 Java 中他们会同时接受string
和StringFormatted
,但在 Xamarin.Android 中他们只接受string
.
解决方案
我发现,与 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()));
推荐阅读
- c# - 在 C# 中创建一个 Windows 服务,该服务将监听/监控 MS Outlook,读取传入的电子邮件并记录所有信息
- java - H2 数据库。使用 html 值更新 CLOB 字段时出错
- mysql - 如何在 MySQL 中制作拆分账单的数据库结构?
- php - 转换为 excel 时卡在 MySQL/MariaDB 占位符限制 - laravel 5.7
- arduino - 如何使内置 LED 系统闪烁?
- apache-spark - 异常“线程“主”java.lang.ExceptionInInitializerError中的异常”
- c# - 使用 Microsoft Word 互操作的 C# 程序
- php - 验证码不接受 Yii
- c# - Google Forms 上的 Webclient C# 从服务器返回 (405) Method Not Allowed
- java - 将 Excel 中的每个单元格数据转换为 XML 以存储到 DB