【发布时间】:2011-03-15 13:33:43
【问题描述】:
我想创建一个带有三个标签的自定义按钮组件:左对齐、居中对齐和右对齐。我不能只使用标签对齐属性,因为我想同时使用所有 3 个标签。
我对创建自定义组件很熟悉,但我以前从未尝试过构建这样的组件...
这是我目前所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<s:Button
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
private var labelContentL:String;
private var labelContentC:String;
private var labelContentR:String;
public function set labelL(value:String):void
{
labelContentL = value;
}
public function set labelC(value:String):void
{
labelContentC = value;
}
public function set labelR(value:String):void
{
labelContentR = value;
}
public function get labelL():String
{
return labelContentL;
}
public function get labelC():String
{
return labelContentC;
}
public function get labelR():String
{
return labelContentR;
}
]]>
</fx:Script>
<s:Label id="l" width="100%" text="{labelContentL}" textAlign="left" paddingLeft="10" />
<s:Label id="c" width="100%" text="{labelContentC}" textAlign="center" />
<s:Label id="r" width="100%" text="{labelContentR}" textAlign="right" paddingRight="10" />
</s:Button>
按钮创建后标签不会改变,所以我不担心缺少[Bindable] 元数据。
我现在卡住了,出现以下编译器错误:
“String”类型的默认属性“label”的多个初始值设定项。
...对于 3 个<s:Label> 行中的每一行。
基于this answer 的类似问题,我尝试将label="" 添加到我的<s:Button> 声明中,但这只会增加另一个错误。
我该如何解决这个问题?
【问题讨论】:
-
我认为 Button 组件只会接受标签的单个实例,因此会出现错误。我想知道您打算如何使用带有 3 个标签的按钮,这些标签分别以 L、C 和 R 对齐。
-
@Angelo 我只使用一个按钮,因为它是最简单的组件,看起来与我想要的很接近,并且提供了我需要的功能(点击处理)而没有太多额外的绒毛。这是设计规范的屏幕截图,展示了如何使用它:skit.ch/be4r
标签: apache-flex flex4