Я использую DividedBox в Flex, который сначала содержит только datagrid. Когда я щелкаю элемент в Datagrid, второй элемент с шириной 0% (Spark Group) добавляется в разделенное поле для отображения изображения.
Дело в том, что когда второй элемент добавляется в DividedBox, изображение частично отображается за пределами DividedBox, и я не хочу иметь такое поведение.
Вот интересный код:
<mx:DividedBox direction="horizontal" id="divider" borderColor="red" borderStyle="solid" borderVisible="true" right="10" left="10" top="10" bottom="10">
<s:Group width="100%" height="100%">
<!--datagrid-->
</s:Group>
</mx:DividedBox>
А вот фрагмент кода, который добавляет второго дочернего элемента splitBox (упрощенный код):
private var _pdf_preview:Group = new Group();
[Bindable]
[Embed(source="assets/image/llama.jpg")]
private var imgClass:Class;
protected function itemOnClickHandler(event:MouseEvent):void
{
_pdf_preview = new Group();
var img:Image = new Image();
img.source = imgClass;
_pdf_preview.addElement(img);
_pdf_preview.percentWidth = 0;
divider.addElement(_pdf_preview);
}
А вот и скрин проблемы (кстати, не замечайте мои навыки работы с GIMP :)). Как новый пользователь я не могу привязать изображения к своему сообщению: экран, показывающий мою проблему, красная граница показывает пределы splitBox
Спасибо. Надеюсь, в этом не слишком много недостатков, английский не мой родной язык. Приносим извинения за ошибки в английском.
PS: я не мог добавить теги «DividedBox», потому что его раньше не было, а я «новый пользователь», поэтому я не могу создавать новые теги.
1 ответ
Вы можете использовать свойство clipContent
, чтобы обрезать изображение по краю DividedBox:
<mx:DividedBox clipContent="true" />
При использовании контейнеров Spark clipAndEnableScrolling
- это свойство, необходимое для достижения той же цели.
Я также хотел бы отметить, что обычно не требуется динамическое добавление компонентов через ActionScript. Вместо этого вы можете использовать «состояния». Например:
<s:states>
<s:State name="normal" />
<s:State name="image" />
</s:states>
<mx:DividedBox clipContent="true">
<s:DataGrid />
<s:Image includeIn="image" />
</mx:DividedBox>
Теперь все, что вам нужно сделать, чтобы отобразить изображение, - это установить currentState
на image
.
Похожие вопросы
Связанные вопросы
Новые вопросы
apache-flex
Apache Flex [НЕ CSS FLEXBOX] - это среда для разработки многофункциональных интернет-приложений, работающих в Flash Player или Adobe Air. Изначально разработанный компанией Adobe, Flex был подарен Apache Software Foundation в 2011 году и стал проектом Apache высшего уровня в декабре 2012 года.