2012-04-23 13 views
7

nella mia applicazione Android ho una stringa che contiene una parola specifica, quindi voglio visualizzare l'intera stringa nella visualizzazione del testo e la parola specifica deve essere evidenziata. L'immagine seguente che segue ti darà un'idea.Come cercare una parola in una stringa e evidenziare la parola in una visualizzazione di testo in Android?

enter image description here

Ho usato seguente codice per fare questo, ma non il suo lavoro.

CODICE:

neo è la mia stringa e groupNameContent è il campo di testo.

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

risposta

7

per ogni parola, è possibile utilizzare:

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

ok dove devo mettere la mia stringa (con)? –

+0

è facile, per ogni parola che vuoi evidenziare, inserisci indice di inizio e indice finale nel metodo setSpan. Puoi avere una serie di stringhe ed evidenziare ogni parola in un ciclo o rendere il tuo testo una serie di parole e decidere se ogni parola deve essere evidenziata. –

+0

sì, si sta evidenziando.se per favore puoi darmi un modo per scoprire l'indice iniziale e l'indice finale di una parola (intendo la logica all'interno del ciclo). –

3

Se posso capire di avere l'elenco delle parole e si vuole trovare queste parole nel testo e sottolineare così in questa risposta si ha tre parametri di input:

  1. testo completo.
  2. yourList
  3. yourTextview per visualizzare il testo del risultato

    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); 
    
Problemi correlati