Android ListView быстрый прокрутка с разделами: текст раздела слишком длинный

Я использую ListView для реализации временной шкалы. Я включил FastScroll и использовал SectionIndexer, чтобы пользователь мог перетащить полосу прокрутки и увидеть текст раздела.

Проблема заключается в том, что это встроенный пользовательский интерфейс. Текстовое представление, которое отображает текст раздела, слишком мало для меня, я пытаюсь отобразить 05pm, и он слишком длинный для textview (или другого пользовательского интерфейса?).

Любые более простые способы решения этой проблемы? Например, метод, который я могу установить размер шрифта текста раздела или макета textview?

Спасибо!

Movie Timeline with FastScroll enabled

Ответ 1

Просматривая исходный код AbsListView, вы можете найти класс, который обрабатывает механизм быстрой прокрутки, который заканчивается FastScroller. FastScroller на самом деле рисует обратимое изображение и текст на холсте, который был предоставлен AbsListView, например, так...

canvas.drawText(mSectionText, (int) (rectF.left + rectF.right) / 2 - hOff, (int) (rectF.bottom + rectF.top) / 2 + mOverlaySize / 4 - descent - vOff, paint);

Приведенный выше код на самом деле рисует текст поверх нижнего изображения, чтобы он не учитывал границы нижнего рисунка, поэтому текст фактически переполняется и не прерывается. Почему это так спроектировано? Я предполагаю, что намерение функции индекса было главным образом использоваться для одиночных символов, таких как A, B, C и т.д.... и поэтому функция индекса быстрой прокрутки была разработана таким образом, чтобы соответствовать этому.

Итак, чтобы дать определенный ответ на ваш вопрос, на самом деле нет способа изменить размер текста или изменить способ рисования текста , если вы не измените AbsListView и FastScroller в соответствии с ваша потребность.