2012-04-23 31 views
7

en mi aplicación para Android tengo una cadena que contiene una palabra específica, así que quiero mostrar toda la cadena en la vista de texto y la palabra específica debe estar resaltada. La siguiente imagen de esperanza te dará una idea.¿Cómo buscar una palabra en una cadena y resaltar palabra en una vista de texto en Android?

enter image description here

he utilizado siguiente código para hacer esto, pero no su trabajo.

CÓDIGO:

desventaja es mi cuerda y groupNameContent es el campo de texto.

con.replaceAll(arrGroupelements[groupPosition][5],"<font color='#CA278C'>"+arrGroupelements[groupPosition][5]+"</font>."); 
groupNameContent.setText(Html.fromHtml(con)); 

Respuesta

7

para cada palabra, puede utilizar:

TextView textView = (TextView)findViewById(R.id.mytextview01); 
//use a loop to change text color 
Spannable WordtoSpan = new SpannableString("partial colored text");   
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
textView.setText(WordtoSpan); 
+0

bien dónde debería poner mi cadena (con)? –

+0

es fácil, para cada palabra que desea resaltar, coloca el índice inicial y el índice final en el método setSpan. Puede tener una matriz de cadenas y resaltar cada palabra en un bucle o hacer que su texto sea una matriz de palabras y decidir si se debe resaltar cada palabra. –

+0

Sí, está resaltando. Si me puede dar una forma de averiguar el índice inicial y el índice final de una palabra (me refiero a la lógica dentro del ciclo). –

3

Si yo puedo entender que tenga la lista de las palabras y que desee encontrar estas palabras en el texto y resaltarlas por lo que en esta respuesta tiene tres parámetros de entrada:

  1. texto completo.
  2. yourList
  3. yourTextview para mostrar el texto de resultado

    String text = "full of your text"; 
    Spannable textSpannable = new SpannableString(text); 
    
    for (int j =0 ; j<yourList.size() ; j++) { 
        //word of your list 
        String word = String.valueOf(yourList.get(j)); 
        //find index of words 
        for (int i = -1; (i = text.indexOf(word, i + 1)) != -1; i++) { 
         //find the length of word for set color 
         int last = i + word.length(); 
         //set text color with spannable 
         textSpannable.setSpan(new BackgroundColorSpan(Color.parseColor("#0cab8f")), 
           i, last, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
        } 
    } 
    yourTextView.setText(textSpannable); 
    
Cuestiones relacionadas