android中怎么使一段字符串显示不同的颜色和字体?

android中如何使一段字符串显示不同的颜色和字体???
   TextView上有一段字符串:
   String str="adl 3kfjad3 sflkd测试自5fadsfedsa5动换行(第1行)";

   如何让两个3之间的字符显示一种颜色和字体;两个5之间的字符显示另外一种颜色和字体?如果嵌入html标签的话,字体和字体大小没效果,只能改变颜色...用canvas,不知道怎样才能只把整个字符串中间的那两段画出另外的颜色和字体?有哪位高手写过啊...实在没招了啊!

------解决方案--------------------
换成WebView试试,动态构建Html,一个TextView插入表情,多钟颜色都可以,但是一个TextView中设置不同字体和大小估计是没戏。
------解决方案--------------------
ColorStateList redColors = ColorStateList.valueOf(0xFFFF0000);
SpannableStringBuilder spanBuilder = spanBuilder.setSpan(new TextAppearanceSpan(null, 0, 0, redColors, null), 4, 10, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);