我得到了一个 edittext,它有多种颜色的文本,如下面的代码。有什么方法可以存储文本和颜色并再次显示它们吗?我曾经使用 SharedPreference 来存储字符串整数等,但这不适用于 Spannables。
Spannable span1 = new SpannableString("this");
Spannable span2 = new SpannableString("is");
Spannable span3 = new SpannableString("text");
span1.setSpan(new ForegroundColorSpan(Color.parseColor("#292929")), 0, span1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span2.setSpan(new ForegroundColorSpan(Color.parseColor("#2980b9")), 0, span2.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span3.setSpan(new ForegroundColorSpan(Color.parseColor("#FFFFFF")), 0, span3.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
edittext.setText(TextUtils.concat(span1, span2, span3));
最佳答案
您可以使用 Html.toHtml()
获取 Spannable
的 HTML 表示形式,然后使用 Html.fromHtml()
将其转换回来>。但是,您需要对此进行彻底的测试,因为并不是所有的格式都能在往返过程中幸存下来。
关于Android Spannable 文本保存/存储问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21444635/