Странное поведение полос прокрутки ListView - PullRequest
1 голос
/ 26 августа 2011

У меня есть ListView, который я хочу заполнить элементами, каждый из которых содержит только один TextView.Особенность этих TextView -s заключается в том, что им нужно использовать собственный шрифт (а не один из трех встроенных шрифтов).Я не могу установить пользовательский шрифт (гарнитуру) через XML, поэтому единственный способ сделать это - вызвать tv.setTypeface() для всех TextView-ов в методе getView() моего адаптера.

Теперь проблема в том, чтошрифт, который я хочу использовать, имеет довольно разный межстрочный интервал (по умолчанию), поэтому результирующий текст кажется больше, чем тот же текст, отрисованный с использованием шрифта по умолчанию (при условии, что мы используем один и тот же textSize для двух шрифтов).Это особенно влияет на то, как ListView измеряет общий размер (высоту) моего текста (и, следовательно, размер полосы прокрутки), думая, что текст отображается с использованием шрифта по умолчанию (хотя в действительности это не так).

КогдаЯ прокручиваю ListView вверх или вниз, и общий размер текста постоянно пересчитывается, что приводит к изменению длины полосы прокрутки (что выглядит странно).Интересно, есть ли способ сказать ListView использовать мой собственный шрифт до вызова метода getView() (т.е. во время измерения текста)?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2013

Кажется, что то, чего я пытаюсь достичь, невозможно.Просто потому, что не существует ни одного элемента списка, кроме тех, которые видны в данный момент.Таким образом, ListView ничего не знает о высоте своих элементов до того, как они были накачаны и заполнены текстом.

Что он может сделать - это только делать предположения на основе макета элемента, предоставленного дляLIstView при создании.

0 голосов
/ 26 августа 2011

Это поведение по умолчанию ListView.Попробуйте установить smoothScrollbar на true.В XML:

android:smoothScrollbar="true"

или в коде:

listView.setSmoothScrollbarEnabled(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...