#apache-flex #actionscript-3 #label #border-container
#apache-flex #actionscript-3 #метка #граница-контейнер
Вопрос:
У меня есть BorderContainer с меткой внутри. Мне нужно, чтобы эта метка была центрирована внутри контейнера. У BorderContainer нет макета (я предполагаю, что он используется по умолчанию, basicLayout …).
Мой код:
определение BorderContainer:
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="bordercontainer1_creationCompleteHandler(event)"
addedToStage="bordercontainer1_addedToStageHandler(event)"
cornerRadius="200" borderWeight="20" >
Когда мой BorderContainer завершен, я динамически загружаю метку:
protected function bordercontainer1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
var countdownText:Label = new Label();
countdownText.width = this.width * 0.5;
//countdownText.height = this.height * 0.5;
countdownText.text =String( countdownDuration );
countdownText.setStyle("fontSize","200");
countdownText.setStyle("fontFamily", "Arial");
countdownText.setStyle("color","#FF0000");
countdownText.setStyle("fontWeight", "bold" );
countdownText.setStyle("textAlign", "center");
this.addElement(countdownText);
//trace("width border:", this.width, ", text width:", countdownText.width);
countdownText.x = (this.width-countdownText.width)/2;
countdownText.y = (this.width-countdownText.width)/2;
}
С помощью этого кода текст метки центрируется в контейнере, но если я устанавливаю свойство BorderWeight, текст сдвигается!!!!!
Заранее благодарю.
Комментарии:
1. Почему вы добавляете этот текст динамически подобным образом? Есть ли веская причина для этого?
Ответ №1:
Итак, я не уверен, что вы подразумеваете под «сдвинутым». Я не смог воспроизвести проблему с вашим кодом … хотя ваш код неполон. Например, что такое countdownText
или bordercontainer1_addedToStageHandler
?
Как насчет того, чтобы избежать динамического кода и просто использовать простую привязку данных?
<fx:Declarations>
<fx:Number id="countdownDuration">5.123</fx:Number>
</fx:Declarations>
<s:BorderContainer cornerRadius="200" borderWeight="20" width="100%" height="100%">
<mx:Label width="50%" text="{countdownDuration}"
fontSize="200" fontFamily="Arial" color="#FF0000"
fontWeight="bold" textAlign="center"
verticalCenter="0" horizontalCenter="0" />
</s:BorderContainer>