如何将titleicon置于Flex 3面板中心?标题是居中的,但标题图标位于面板的左侧。
<mx:Panel
title="{myTitle}"
textAlign="center"
titleStyleName="panelTitle"
titleIcon="{myIcon}"
>
.panelTitle {
font-size: 14;
fontFamily: "Lucida Grande";
}
编辑:我正试图让www.flextras.com建议工作。这就是我所拥有的:
package com.mysite.components
{
import mx.containers.Panel;
public class CenterTitleIconPanel extends Panel
{
override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth,unscaledHeight);
if (titleIconObject)
{
titleIconObject.move((unscaledWidth-titleIconObject.width)/2,(unscaledHeight-titleIconObject.height)/2);
}
}
public function CenterTitleIconPanel()
{
super();
}
}
}
但是,我收到错误1178:
1178:尝试访问无法访问 属性titleIconObject通过a 静态类型的引用 com.mysite.components:CenterTitleIconPanel
有什么建议吗?谢谢。
答案 0 :(得分:3)
扩展组件并覆盖layoutChrome方法以重新定位titleIcon。
大概是这样的:
override protected function layoutChrome(unscaledWidth:Number,
unscaledHeight:Number):void{
super.layoutChrone(unscaledWidth,unscaledHeight);
if (titleIconObject)
{
titleIconObject.move((unscaledWidth-titleIconObject.width)/2,(unscaledHeight-titleIconObject.height)/2);
}
}
基本上,我取组件的unscaledWidth,减去titleIconObject的宽度,然后将该值减半,得到组件的X位置。
然后我在高度上使用相同的方法。
由于titleIconObject使用类似的方法定位,我怀疑有哪些样式会影响定位。
您尝试的问题是titleIconObject放在自定义命名空间mx_internal中。这是Flex团队的一点黑魔法。但是,要访问该自定义命名空间中的属性,必须导入命名空间并使用它。此更新的代码应该有效:
package com.mysite.components
{
import mx.containers.Panel;
import mx.core.mx_internal;
use namespace mx_internal;
public class CenterTitleIconPanel extends Panel
{
override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth,unscaledHeight);
if (titleIconObject)
{
titleIconObject.move((unscaledWidth-titleIconObject.width)/2,(unscaledHeight-titleIconObject.height)/2);
}
}
public function CenterTitleIconPanel()
{
super();
}
}
}
mx_internal是Flex团队不想记录的所有东西都存在(或死亡)的地方。