private CharSequence applySpans(CharSequence text, int offset) { List<HighLight> highLights = highlightManager.getHighLights(bookView.getFileName()); int end = offset + text.length() - 1; for (final HighLight highLight : highLights) { if (highLight.getIndex() == bookView.getIndex() && highLight.getStart() >= offset && highLight.getStart() < end) { LOG.debug( "Got highlight from " + highLight.getStart() + " to " + highLight.getEnd() + " with offset " + offset); int highLightEnd = Math.min(end, highLight.getEnd()); ((Spannable) text) .setSpan( new HighlightSpan(highLight), highLight.getStart() - offset, highLightEnd - offset, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } return text; }