PDA

Просмотр полной версии : Изменение размера кастомного scrollbar'а


GAmoVeR
13.06.2010, 11:35
Меняю стили у скролла для Canvas

<mx:Style>
ScrollBar {
<mx:Style>
ScrollBar {
downArrowDownSkin: Embed(source="D:/Work/pirate/icos/down.png");
downArrowOverSkin: Embed(source="D:/Work/pirate/icos/down.png");
downArrowUpSkin: Embed(source="D:/Work/pirate/icos/down.png");
upArrowDownSkin: Embed(source="D:/Work/pirate/icos/up.png");
upArrowOverSkin: Embed(source="D:/Work/pirate/icos/up.png");
upArrowUpSkin: Embed(source="D:/Work/pirate/icos/up.png");
trackSkin: Embed(source="D:/Work/pirate/icos/track_back.png");
thumbUpSkin: Embed(source="D:/Work/pirate/icos/track.png");
thumbOverSkin: Embed(source="D:/Work/pirate/icos/track.png");
thumbDownSkin: Embed(source="D:/Work/pirate/icos/track.png");
}
</mx:Style>


Каждый рисунок имеет ширину 10 пикселей. Скроллбар остается старой ширины. Как заставить его принудительно изменить ширину на 10 px?

Dimitry_II
13.06.2010, 16:05
Вряд ли получится сделать "в одно касание".
Любой скроллируемый визуальный элемент - наследник класса ScrollControlBase, у которого есть свойства horisontalScroll и verticalScroll типа ScrollBar, то есть height и width меняется. Но свойства эти protected.
Поэтому 2 варианта:
- если делается своя библиотека элементов, то можно переопределить ScrollControlBase, от него наследовать визуальные классы и в них с легкостью менять скроллы - но это слишком гиморно ...;
- отключить скроллы в элементах и добавлять на сцену HScrollBar и VScrollBar, которые привязывать к нужным скроллируемым элементам - а их уже можно изменять на свое усмотрение;
- тупо для отдельно взятого проекта в исходниках в mx.controls.scrollClasses.ScrollBar подправить константу THICKNESS (по дефаулту 16 пикселей) - для компиляции. Метод, конечно, жутко некошерный, но действенный и быстрый :) (не пробовал, но должно прокатить).

GAmoVeR
14.06.2010, 08:59
Смутило меня поведение VScrollBar, как то странно он себя ведет - просто так выставить ему позицию нельзя, сам встает куда хочет, и справа от него никакое содержимое поместить нельзя. Глюки?

Попробовал изменить в исходниках :) Скролла ровно два, и оба с одинаковым стилем. Сделал cleanup проекта, build по новой... и ничего не изменилось. Какой то есть кэш или надо было еще что то сменить?

Хемуль
14.06.2010, 18:32
Чтобы полоса прокрутки стала узенькой, попробуйте для
- upArrowUpSkin
- upArrowOverSkin
- upArrowDownSkin
- upArrowDisabledSkin
- downArrowUpSkin
- downArrowOverSkin
- downArrowDownSkin
- downArrowDisabledSkin
задать узенький скин. То есть, укажите для всех 4-х состояний обоих кнопок узенькие скины.

Dimitry_II
15.06.2010, 04:03
Наверняка нет.

Цитата с оффсайта для ряда стилей:
"Имя класса для использования темы оформления для кнопки со стрелкой вниз полосы прокрутки при щелчке кнопкой мыши на кнопке со стрелкой. При изменении темы оформления графически или программно требуется убедиться, что новая тема оформления той же высоты (для вертикальных полос прокрутки) или ширины (для горизонтальных полос прокрутки) что и полоса прокрутки."

Чего бы они упоминали про размеры, если бы они менялись?

Все-таки нужно возиться с VScrollBar и HScrollBar