Highlight words in a textview when pressed
<p>I have a TextView to display a paragraph of text and I want my application to speak individual words when they are pressed, using TTS. It would look better if words can be highlighted when pressed. I have implemented it using a ClickableSpan for each word. It works almost fine except that I do not see how to reset the highlighted state back to normal once playback is done. Each time I click a new word the previous word loses the highlight and the new one gets highlighted, but I do not know how to remove the highlight once TTS calls back:</p>

<p>My TextView:</p>

<pre><code>&lt;TextView
    android:id="@+id/sentence"
    ...
    android:textColorHighlight="@color/i_blue"
 /&gt;
</code></pre>

<p>To fill in the TextView, I use:</p>

<pre><code>SpannableStringBuilder strBuilder = new SpannableStringBuilder();
Iterator&lt;Word&gt; iterator = e.getWordList().iterator();
int wordStart, wordEnd;
while (iterator.hasNext()) {
    Word w =  iterator.next();
    wordStart = strBuilder.length() + w.getPrefix().length();
    wordEnd = wordStart + w.getWord().length();
    strBuilder.append(w.getPrefix() + w.getWord() + w.getSuffix());
    final String currentWord = w.getWord();
    ClickableSpan readWord = new ClickableSpan() {
        private String clickedWord = currentWord;
        public void onClick(View view) {
            Message msg = m_HandlerReadWord.obtainMessage();
            msg.obj = clickedWord;
            m_HandlerReadWord.sendMessage(msg);
        }
        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
    };
    strBuilder.setSpan(readWord, wordStart, wordEnd, 0);
}
m_SentenceView.setText(strBuilder);
m_SentenceView.setMovementMethod(LinkMovementMethod.getInstance());
</code></pre>

<p>And I also have this method which is called once TTS calls back when it is done playing the word:</p>

<pre><code>public void resetHighlight() {
 //What can I do there to reset any highlighted word?
}
</code></pre>

<p>Is there a way I can do it? Or is there a better approach than ClickableSpan?</p>
