Java 将样式应用于字符串中的文本

Java 将样式应用于字符串中的文本,java,android,string,styles,contains,Java,Android,String,Styles,Contains,我正在尝试创建一个带有SpannableString的字符串来应用颜色和粗体文本 Spannable WordtoSpan = new SpannableString("Salida de la Capilla de María Auxiliadora\n00:00\nMarquesa de Sales\n00:00\nEspíritu Santo\n00:00\nSagasta\n00:00\nPza. Meneses\n00:00\nPozo Nuevo\n00:00\nPza. Ayunt

我正在尝试创建一个带有SpannableString的字符串来应用颜色和粗体文本

Spannable WordtoSpan = new SpannableString("Salida de la Capilla de María Auxiliadora\n00:00\nMarquesa de Sales\n00:00\nEspíritu Santo\n00:00\nSagasta\n00:00\nPza. Meneses\n00:00\nPozo Nuevo\n00:00\nPza. Ayuntamiento\n00:00\nSan Miguel\n00:00\nEstación de Penitencia, Iglesia San Miguel\n00:00\nÁnimas\n00:00\nMariano Hernández\n00:00\nEduardo Dato\n00:00\nRojas Marcos\n00:00\nPza. Meneses\n00:00\nCarrera\n00:00\nCalzadilla\n00:00\nGregorio María Ferro\n00:00\nMaría Auxiliadora\n00:00\nMarquesa de Sales\n00:00\nEntrada al Templo\n00:00\n");

tv.setText(WordtoSpan);
为了加快我的工作速度,我试图创造这样一个条件:

if(WordtoSpan.toString().contains(":")){
// found the text string ":" (00:00)

WordtoSpan.setSpan(new ForegroundColorSpan(Color.rgb(140, 117, 189)), 42, 47, 
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
WordtoSpan.setSpan(new StyleSpan(Typeface.BOLD), 42,47, 47);
}else{
//Not found ":"
}
我将对所有字符串00:00实现粗体文本和颜色。有人知道什么简单快捷的方法吗?不去逐字逐句地讲去填满所有的零时

问候

找到“00:00”的索引,将其设置为跨度的开始索引,将结束索引设置为“00:00”的长度


您必须在整个字符串中循环索引

,谢谢您的回答。他向我展示了Logcat错误->我复制了你的代码并展示了错误:方法setSpan(ForegroundColorSpan,int,int,int)对于类型Stringsome没有定义一些小的修改。请参阅更新的答案。这应该行得通。我现在测试:)您建议我更改什么以使用相同的字符串00:00、1:00和2:00?
    Spannable WordtoSpan = new SpannableString("Salida de la Capilla de María Auxiliadora\n00:00\nMarquesa de Sales\n00:00\nEspíritu Santo\n00:00\nSagasta\n00:00\nPza. Meneses\n00:00\nPozo Nuevo\n00:00\nPza. Ayuntamiento\n00:00\nSan Miguel\n00:00\nEstación de Penitencia, Iglesia San Miguel\n00:00\nÁnimas\n00:00\nMariano Hernández\n00:00\nEduardo Dato\n00:00\nRojas Marcos\n00:00\nPza. Meneses\n00:00\nCarrera\n00:00\nCalzadilla\n00:00\nGregorio María Ferro\n00:00\nMaría Auxiliadora\n00:00\nMarquesa de Sales\n00:00\nEntrada al Templo\n00:00\n");

    String search = new String("00:00");
    int length = search.length();
    String input = WordtoSpan.toString();
    int startIndex = input.indexOf(search);
    while(startIndex > length)
    {
        WordtoSpan.setSpan(new ForegroundColorSpan(Color.rgb(140, 117, 189)), startIndex, startIndex + length,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        WordtoSpan.setSpan(new StyleSpan(Typeface.BOLD), startIndex, startIndex + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        startIndex = input.indexOf(search, startIndex + length);
    }