突出显示字符串中的子字符串

时间:2014-05-15 11:15:45

标签: android spannablestring

我想突出显示(更改颜色)字符串中的单个单词,然后在一段随机时间之后我想更改下一个单词颜色。

我知道如何更改子字符串的颜色,但我想在运行时更改并继续更改下一个字的颜色。

请求帮助

`@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    String coloredString;
    String myStr[] = myStrList.get(position).split("-");

    for(int i=0; i<myStr.length;i++){

         if(position==selectionRowIndex){
             if(i==selectionWordIndex){
                 String colorWord = "<font color='#EE0000'>"+myStr[i]+"</font> ";
                 coloredString+=colorWord;
             }else{
                 coloredString+=myStr[i];
             } 
         }else{
             coloredString+=myStr[i];
         }

    }

     ViewHolder holder = null;
     LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

     if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_item, null);
            holder = new ViewHolder();


            holder.txtStr = (TextView) convertView.findViewById(R.id.text_Str);


            convertView.setTag(holder);
        } else
            holder = (ViewHolder) convertView.getTag();




            holder.txtStr .setText(Html.fromHtml(coloredString));

1 个答案:

答案 0 :(得分:3)

创建一个Spannable对象,通过SpannableString设置其文本。

Spannable spanobj = new SpannableString("word to set color");        
spanobj.setSpan(new ForegroundColorSpan(Color.WHATEVER), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

您可以使用它来设置textview.setText(spanobj);

上的文本

将0,4(开始索引,结束索引)循环为5,7,并更新视图以更多地为字符串着色。 0,4会设置'word'的颜色 5,7应该设置颜色等等......

相关问题