Есть более или менее два разных способа добиться этого:
1)
Я думаю, официальным способом, используя Spannable:
http://developer.android.com/reference/android/text/Spannable.html
С помощью Spannable вы можете сделать что-то вроде этого:
Spannable spannable = (Spannable) yourTextView.getText();
spannable.setSpan(new BackgroundColorSpan(0xFF0000), startPosition, endPosition, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Существуют различные Spannables, такие как BackgroundColorSpan, которые я использовал в примере кода. Флаги объяснены здесь и в этом пакете вы можете найти различные возможности Spannable.
2)
Гораздо более простой, но более или менее недокументированный способ - использовать теги HTML. Например, вы можете использовать такой код:
String textString ="<font color='#ff0000' > <b>hello</b> </font>"
yourTextView.setText(Html.fromHtml(textString))
Я не уверен, какие теги HTML поддерживаются. И я не знаю документации об этом, поэтому я думаю, что вы просто должны попробовать. Но по крайней мере жирный шрифт и цветной шрифт работают в коде, который я использую в своем приложении.