我对这个头发给予了相当大的敬意
为什么标签 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>
错误还是功能?的标签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">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)