gpt4 book ai didi

apache-flex - 如何让我的 flex spark 皮肤垂直居中?

转载 作者:行者123 更新时间:2023-12-04 05:51:51 25 4
gpt4 key购买 nike

我创建了一个皮肤,允许我在一个 Spark 按钮上有两个标签,但按钮文本不会垂直居中。无论我给它什么设置,它都停留在按钮的顶部。然而,皮肤中的图标确实垂直居中。

这是皮肤:

<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
minWidth="82" minHeight="82"
alpha.disabled="0.5" initialize="autoIconManagement=false">
<fx:Metadata>[HostComponent("com.XXXX.components.TwoLineButton")]</fx:Metadata>

<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>

<s:Image source="{getStyle('upSkin')}"
source.over="{getStyle('overSkin')}"
source.down="{getStyle('downSkin')}"
source.disabled="{getStyle('disabledSkin')}"
width="100%" height="100%"
/>

<s:HGroup verticalAlign="middle" height="100%" width="100%"
paddingLeft="{getStyle('paddingLeft')}"
paddingRight="{getStyle('paddingRight')}"
paddingTop="{getStyle('paddingTop')}"
paddingBottom="{getStyle('paddingBottom')}"
gap="{getStyle('horizontalGap')}"
verticalCenter="0">

<s:BitmapImage id="iconDisplay" includeInLayout="{iconDisplay.source}"/>

<s:VGroup gap="{getStyle('verticalGap')}" height="100%" width="100%">
<s:Label id="labelDisplay"
textAlign="center"
width="100%"
maxDisplayedLines="1"
horizontalCenter="0" verticalCenter="1" verticalAlign="middle"
left="10" right="10" top="2" bottom="2">
</s:Label>

<s:Label id="bottomLabelDisplay"
textAlign="center"
width="100%"
maxDisplayedLines="1"
horizontalCenter="0" verticalCenter="1" verticalAlign="middle"
left="10" right="10" top="2" bottom="2">
</s:Label>
</s:VGroup>
</s:HGroup>

这是我调用它的代码:
<components:TwoLineButton
width="308"
label="TopLabel"
bottomLabel="Bottom label"
click="handleButtonClick(event)"
/>

我试过让 HGroup 使用硬编码的高度值,但这也不起作用。

提前致谢。

最佳答案

HGroup在你的皮肤上应该是这样的:

<s:HGroup verticalAlign="middle" height="100%" width="100%"
paddingLeft="{getStyle('paddingLeft')}"
paddingRight="{getStyle('paddingRight')}"
paddingTop="{getStyle('paddingTop')}"
paddingBottom="{getStyle('paddingBottom')}"
gap="{getStyle('horizontalGap')}" >

<s:BitmapImage id="iconDisplay" includeInLayout="{iconDisplay.source}"/>

<s:VGroup gap="{getStyle('verticalGap')}" width="100%" verticalAlign="middle" >
<!-- not sure if you need 100% width here -->
<s:Label id="labelDisplay"
textAlign="center"
width="100%"
maxDisplayedLines="1">
</s:Label>

<s:Label id="bottomLabelDisplay"
textAlign="center"
width="100%"
maxDisplayedLines="1">
</s:Label>
</s:VGroup>
</s:HGroup>

您的标签在 VGroup 中所以属性如 verticalCenter , horizontalCenter , top , left等不适用。这些属性仅适用于 BasicLayout (绝对定位的布局)。

我还删除了 VGroup 上的 100% 高度包含标签。这意味着标签组的高度将取决于需要(所以现在我们可以实际将其居中)。

最后,添加 verticalAlign="middle"VGroup .由于该组的父级是 HGroup ,VGroup 应该水平放置在 BitmapImage 旁边如果存在,并在中间垂直对齐。

关于apache-flex - 如何让我的 flex spark 皮肤垂直居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com