我通过遵循简单的代码来解决这个问题。
https://github.com/yuseisako/TangoPlayer/blob/master/app/src/main/java/me/yusei/tangoplayer/VideoPlayerActivity.java#L527
scrollSubtitleRunnable = new Runnable() {
List<Caption> subtitles = new ArrayList<>(timedTextObject.captions.values());
@Override
public void run() {
if(mMediaPlayer != null && mMediaPlayer.isPlaying()){
float currentPos = mMediaPlayer.getTime();
int index = 0;
for (Caption caption : subtitles) {
if (currentPos >= caption.start.mseconds - subtitleDelay
&& currentPos <= caption.end.mseconds - subtitleDelay) {
listView.setItemChecked(index,true);
int height = listView.getHeight();
listView.setSelectionFromTop(index, height/2);
setSubtitleTextView(caption);
break;
} else {
setSubtitleTextView(null);
if(currentPos < caption.end.mseconds - subtitleDelay){
break;
}
}
index++;
}
}
scrollSubtitleHandler.postDelayed(this, 300);
}
};
scrollSubtitleHandler.post(scrollSubtitleRunnable);