2012-04-23 22 views
7

私のアンドロイドアプリケーションでは、私は特定の単語を含む文字列を持っているので、テキストビューで全体の文字列を表示したい特定の単語をハイライト表示する必要があります。文字列内の単語を検索し、アンドロイドのテキストビューで単語を強調表示する方法は?

enter image description here

私はこれを行うには、次のコードを使用しますが、その作業をしていません。

CODE:

conが私の文字列で、groupNameContentはテキストフィールドです。単語ごとに

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

答えて

7

、あなたが使用することができます。

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結果テキストを表示するには? –

+0

これは簡単です。ハイライトしたい単語ごとに、開始インデックスと終了インデックスをsetSpanメソッドに配置します。文字列の配列を持つことができ、ループ内の各単語を強調表示したり、テキストを単語の配列にしたり、各単語を強調表示する必要があるかどうかを判断したりできます。 –

+0

これはハイライト表示です。私は単語の開始インデックスと終了インデックスを見つける方法を教えてください。(私はループ内のロジックを意味します)。 –

3

私はあなたが単語のリストを持っていて、テキスト内のこの単語を見つけたい理解し、あなたが持っているこの答えではので、それらを強調表示することができた場合3つの入力パラメータ:

  1. フルテキスト
  2. yourList
  3. yourTextviewは、私は私の文字列(CON)を置く必要があります

    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); 
    
関連する問題