Ответ 1
Используйте int nextSpanTransition(int start, int limit, Class kind)
, чтобы перебирать ваши интервалы. Таким образом, вы получаете заказ на чтение.
Я использую следующий код, чтобы просеять Spanned String, сохраняя весь выделенный текст в виде строки в массиве:
StyleSpan[] spans = storyText.getSpans(0,
storyText.length(), StyleSpan.class);
List<String> boldedWords = new ArrayList<String>();
for (StyleSpan span : spans) {
if (span.getStyle() == Typeface.BOLD) {
//start
int s = storyText
.getSpanStart(span);
//end
int e = storyText.getSpanEnd(span);
boldedWords.add(storyText.subSequence(
s, e).toString());
}
}
String[] array = boldedWords
.toArray(new String[boldedWords.size()]);
Тем не менее, строки, которые я получаю в массиве, выходят из строя. Например:
Приговор может быть (CAPS представляет жирный текст):
storyText = "This ADJECTIVE NOUN is VERB"
Массив, который я бы получил, будет следующим: "Существительное, глагол, Прилагательное" в этом порядке. Это должно быть: "Прилагательное, существительное, глагол"
Любое понимание того, почему это может произойти?
Используйте int nextSpanTransition(int start, int limit, Class kind)
, чтобы перебирать ваши интервалы. Таким образом, вы получаете заказ на чтение.