Есть ли способ установить minHeight большого пальца полосы прокрутки в Flex 3 - PullRequest
1 голос
/ 24 декабря 2009

В моем проекте нам нужно было сделать полосы прокрутки похожими на полосы прокрутки Windows.

Поэтому у меня есть thumbIcon на большом пальце вертикальной полосы прокрутки, но если я получаю слишком много элементов в выпадающем списке, полоса прокрутки становится неудобной. Это потому, что поле между thumbIcon и границей thumbSkin слишком мало.

Есть ли способ установить минимальную высоту thumbSkin, чтобы я мог убедиться, что там всегда есть поле, и оно всегда хорошо выглядит, даже если элементов слишком много?

Скользящая полоса прокрутки http://img97.imageshack.us/img97/7057/nomargins.gif

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

Обычная полоса прокрутки http://img15.imageshack.us/img15/5527/margins.gif

Это обычная полоса прокрутки, у thumbIcon и границ большого пальца достаточно поля, благодаря чему полоса прокрутки выглядит намного лучше.

Ответы [ 3 ]

1 голос
/ 23 апреля 2010

Альтернативой переопределению классов является получение ссылки на scrollThumb как дочернего элемента ScrollBar.

        var scrollThumb:ScrollThumb = hScrollBar.getChildAt(2) as ScrollThumb;
        scrollThumb.minHeight = 50;

Это не идеально, поскольку оно зависит от индекса ScrollThumb, но я сомневаюсь, что оно может измениться, и это проще, чем переопределение классов flex.

1 голос
/ 28 января 2010

Вы должны быть в состоянии расширить (или, если вы чувствуете себя действительно смелым, отредактировать) класс ScrollThumb, там есть минимальная высота, равная 10, что, я согласен, довольно мало.

Затем вы захотите расширить класс scrollBar и установить стиль thumbUpSkin для использования этого нового расширенного класса ScrollThumb.

Наконец, вы захотите расширить свой выпадающий элемент управления, чтобы использовать новый расширенный класс scrollBar.

Я бы был более конкретным, но мне пока не удобно расширять классы и переписывать вещи, может быть, кто-то лучше поймет мой ответ здесь и даст хороший пример кода.

Преимущество редактирования класса заключается в том, что вам не нужно будет расширять все остальные участвующие классы, но недостатком является то, что каждый ScrollBar в проектах, скомпилированных в вашем SDK, будет использовать новую настройку минимальной высоты, и если он скомпилирован с «нетронутым» SDK (может быть, его коллегой), это будет любой параметр в этом SDK, что может привести к некоторым действительно трудным поискам неисправностей в будущем.

0 голосов
/ 18 марта 2010

Вот решение, которое я нашел для обеспечения минимального размера большого пальца прокрутки. Я расширил HScrollBar и VScrollBar и переопределил метод setScrollProperties, чтобы установить минимальный размер. Вот версия HScrollBar:

package your.package
{
import mx.controls.HScrollBar;
import mx.core.mx_internal;

use namespace mx_internal;

public class LargeThumbHScrollBar extends HScrollBar
{
    public function LargeThumbHScrollBar()
    {
        super();
    }

    public override function setScrollProperties(pageSize:Number,
                                        minScrollPosition:Number,
                                        maxScrollPosition:Number,
                                        pageScrollSize:Number = 0):void
    {
        super.setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, pageScrollSize);

        if (scrollThumb) {
            scrollThumb.explicitMinHeight = 100;
        }
    }

}
}

Как для HScrollBar, так и для VScrollBar вы устанавливаете явный размер минимальной высоты (не устанавливайте явный размер минимальной ширины в любой версии).

Я не уверен, как получить полосы прокрутки по умолчанию для компонента, чтобы использовать подклассы, хотя. Мне не пришлось решать эту проблему, потому что мы добавляли полосы прокрутки на себя. Быстрый поиск в Google не дал ответов.

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