Определение наличия активных полос прокрутки в UIComponent - PullRequest
0 голосов
/ 20 мая 2009

У меня есть TileList в flex, и мне нужно уметь определять, отображаются ли полосы прокрутки или нет, поэтому я могу изменить размер элементов, которые он раскладывает.

Для ScrollPolicy установлено значение auto, но мне нужна переменная, такая как CurrentScrollPolicy, которая будет меняться с выключенного на включенное в зависимости от содержимого.

Спасибо

Ответы [ 4 ]

5 голосов
/ 29 мая 2009

Спасибо eBuildy, ваше право!

Я создал пример, который также учитывает тот факт, что полосы прокрутки скрываются, когда они не нужны, а не возвращаются к нулю:

   public class CustomTileList extends TileList
{

    public function CustomTileList()
    {
        super();
    }

    /**
     * Returns true if the vertical scroll bar is displayed
     * @return Boolean
     *
     */
    public function hasVerticalScrollBar():Boolean
    {
        if (super.verticalScrollBar == null || super.verticalScrollBar.visible == false)
            return false;
        return true;
    }

}

Спасибо за помощь.

4 голосов
/ 21 апреля 2011

Или, если вы не хотите переопределять список, вы можете получить что-то вроде

if(listInstance.mx_internal::scroll_verticalScrollBar != null){...}

Ура! * * 1004

1 голос
/ 09 марта 2012

Я использовал очень простой трюк, чтобы обойти эту проблему. Установите максимальную позицию прокрутки, так как она всегда будет нулевой, если полос прокрутки нет, если вы проверите ее, и она выше нуля. Добавьте высоту к элементу, потому что должны быть полосы прокрутки.

yourControl.verticalScrollPosition = yourConrol.maxVerticalScrollPosition;

for (var i:int=0; i <= yourControl.verticalScrollPosition ;i++)
{
     yourControl.height = yourControl.height+16;
}
0 голосов
/ 20 мая 2009

Вам необходимо проверить вертикальную прокрутку. Если его ноль, то полоса прокрутки отсутствует. Если это не ноль, то есть полоса прокрутки.

...