我有一個TextView以顯示一段文本,我希望我的應用程序在使用TTS按下時說出單個單詞。如果按下時可以突出顯示文字,效果會更好。我已經爲每個單詞使用ClickableSpan實現了它。它的工作原理幾乎沒有問題,只是在播放完成後我沒有看到如何將突出顯示的狀態重置爲正常狀態。每次我點擊了一個新詞前一個字失去了亮點和新的被強調,但我不知道如何刪除的亮點一旦TTS回調:在按下時突出顯示textview中的單詞
我的TextView:
<TextView
android:id="@+id/sentence"
...
android:textColorHighlight="@color/i_blue"
/>
要填寫TextView的,我用:
SpannableStringBuilder strBuilder = new SpannableStringBuilder();
Iterator<Word> 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());
而且我也有這樣的方法,該方法被調用一次TTS回調時做打的字:
public void resetHighlight() {
//What can I do there to reset any highlighted word?
}
有沒有辦法做到這一點?還是有比ClickableSpan更好的方法?
西爾你能告訴我怎樣才能實現呢?我需要在烤麪包上顯示每個單詞 – 2017-07-22 05:07:49