Как создать «прокладку» в Flex LinkBar? - PullRequest
0 голосов
/ 01 декабря 2009

Я пытался добиться следующего: создать LinkBar с шириной, установленной на 100%, и поместить 4 кнопки LinkB слева, а 5-ю кнопку нужно расположить справа. Сначала я пытался поместить 2 элемента управления LinkBar в HBox, однако это, казалось, повредило гибкое приложение и привело к пустому экрану. Затем я попытался поместить mx: Spacer в свойство dataProvider панели ссылок, но оно также не сработало, спейсер занимает всего около 1 символа в ширину и не нажимает 5-ю кнопку полностью вправо. Пожалуйста, помогите, спасибо.

1 Ответ

2 голосов
/ 01 декабря 2009

Для этого вам понадобится обезьяна-патч класса. LinkBar - это горизонтальный блок, который автоматически добавляет объекты-разделители между дочерними элементами. Проверьте метод updateDisplayList - обратите внимание, что размер разделителей устанавливается с помощью этого бита кода:

if (isVertical())
{
...
    separator.setActualSize(separatorWidth, verticalGap);
...
}
else
{
...
    separator.setActualSize(horizontalGap, separatorHeight);
...
}

Вам нужно как-то изменить это поведение. Моя рекомендация состоит в том, чтобы определить, является ли это последней проставкой в ​​объекте (сравнивая итератор цикла "i" с общим количеством объектов "n" в списке дочерних элементов), и, если это так, установить его ширину равной 100%. или явно рассчитанная версия того же самого.

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

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

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