我已经向这一位致敬了 为什么世界上,标签1和标签2有不同的垂直对齐方式?
<s:Form width="100%">
<s:FormHeading width="100%" label="Heading" />
<s:FormItem width="100%" label="Label 1">
<s:HGroup verticalAlign="bottom">
<s:Label text="Size" fontSize="40"/>
<s:Label text="Mb"/>
</s:HGroup>
</s:FormItem>
<s:FormItem width="100%" label="Label 2">
<s:HGroup verticalAlign="middle">
<s:VGroup horizontalAlign="center">
<s:Label text="Set1" />
<s:Label text="{this.set1}" fontSize="40"/>
<s:Label text="Days" />
</s:VGroup>
<s:Label text="+" fontSize="40" />
<s:VGroup horizontalAlign="center">
<s:Label text="Set2" />
<s:Label text="{this.set2}" fontSize="40" />
<s:Label text="Days" />
</s:VGroup>
</s:HGroup>
</s:FormItem>
</s:Form>
答案 0 :(得分:5)
错误或功能? FormItem
的标签与FormItem
内容的基线对齐。一张图片说的超过一千字,所以我会告诉你会发生什么:
所以事实证明这是一个特征(感谢你提出这个问题:直到今天我才知道这一点。)
为了“修复”此功能,您必须创建自定义皮肤:通过复制原始spark.skins.spark.FormItemSkin
来创建皮肤类。
找到名为labelDisplay
的元素;它应该是这样的:
<s:Label id="labelDisplay"
fontWeight="bold"
left="labelCol:0" right="labelCol:5"
bottom="row1:10" baseline="row1:0"/>
看到baseline
属性?这就是造成不良行为的原因
你可以简单地删除它;然后标签将始终与底部对齐。如果您希望将其与垂直中心对齐,您可以改变它:
<s:Label id="labelDisplay" fontWeight="bold" verticalAlign="middle"
left="labelCol:0" right="labelCol:5" top="row1:10" bottom="row1:10"/>
现在您需要做的就是将自定义皮肤应用于FormItem:
<s:FormItem skinClass="my.custom.FormItemSkin">
或者在更频繁使用的情况下:
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
s|FormItem.centeredLabel {
skinClass: ClassReference("my.custom.FormItemSkin");
}
</fx:Style>
<s:FormItem styleName="centeredLabel">