我有一个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