Поздно, но вчера я понял эту проблему. Проблема в вашем случае, если ваш конец перед началом, как 7 .... 0, что неправильно, если вы хотите выделить текст, который вы начинаете, должен быть меньше, чем ваш конец Посмотрите опубликованный пример, он отлично работает.
Ответ для тех, у кого все еще есть эта проблема.
String searchText = "Your search String";
String qr_code = "Your String";
int length = searchText.length();
if (length > 0) {
//color your text here
int index = qr_code.indexOf(searchText);
SpannableString sb = new SpannableString(qr_code);
ForegroundColorSpan fcs = new ForegroundColorSpan(getResources().getColor(R.color.colorAccent));
sb.setSpan(fcs, index, (index+length), Spanned.SPAN_EXCLUSIVE_INCLUSIVE)
holder.textViewShortCode.setText(sb);
} else {
textViewShortCode.setText(Html.fromHtml(qr_code));
}