好吧,假设我们有这样的文本

String s="123 45678 91011122314 1516";

现在我的问题是我想这么说
textview.setText(stylemystring(s));

我希望'123'是粗体和红色,45678是斜体和蓝色,所以
我发现在设计这些东西的样式时有很多问题,htmlformat有一些解决方案,但问题是文本的大小应该是红色或蓝色是动态的,所以我需要一些更灵活的东西。
谢谢

最佳答案

这样的做法应该管用:

    SpannableStringBuilder text = new SpannableStringBuilder("123 45678 91011122314 1516");
    text.setSpan(new ForegroundColorSpan(Color.RED), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    text.setSpan(new ForegroundColorSpan(Color.BLUE), 4, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    text.setSpan(new StyleSpan(Typeface.BOLD), 4, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    textView.setText(text, TextView.BufferType.SPANNABLE);

可以将不同的样式添加到字符串的不同部分。
基于http://developer.android.com/resources/faq/commontasks.html#selectingtext

关于android - Textview的颜色和样式操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6562217/

10-08 21:50