Flex - 标签布局问题:较短的文本意味着较宽的标签
有人知道为什么以下代码会导致第一个标签比第二个标签宽吗?第一个框(较短的文本)宽度为 21 像素,第二个框宽度为 19 像素。
<mx:VBox>
<mx:HBox id="lbl1" backgroundColor="#6789ad">
<mx:Label fontWeight="bold" color="white" text="0" />
</mx:HBox>
<mx:HBox id="lbl3" backgroundColor="#6789ad">
<mx:Label fontWeight="bold" color="white" text="12" />
</mx:HBox>
</mx:VBox>
我在 Flex 3.4 和 Flex 3.5 上运行了这个。使用 Flex 4 相同但不同,第一个框 20 像素,第二个框又是 19。
干杯 汤姆
Would anybody know why the following code results in the first label being wider than the second one? The first box (shorter text) measures 21 pixels in width, the second box 19 pixels.
<mx:VBox>
<mx:HBox id="lbl1" backgroundColor="#6789ad">
<mx:Label fontWeight="bold" color="white" text="0" />
</mx:HBox>
<mx:HBox id="lbl3" backgroundColor="#6789ad">
<mx:Label fontWeight="bold" color="white" text="12" />
</mx:HBox>
</mx:VBox>
I ran this on Flex 3.4 and Flex 3.5. Same same but different using Flex 4, first box 20 pixels, second 19 again.
Cheers
Tom
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
罪魁祸首可能是
mx.controls.Label
中的getMinimumText
函数——本质上它在标签上强制执行 2 个字符的最小宽度(具体来说,测量任何 0 或 1 个字符的标签,如如果它们包含“Wj”)。要查看是否是这样,请尝试将“12”文本替换为“Wj”,然后查看它们的大小是否相同。
getMinimumText
在SliderLabel
中被重写,以改为最少 1 个字符(“W”)。我认为这样做是为了允许 1 个字符标签居中(在滑块刻度上)。这就是 SliderLabel 所做的全部工作,因此您可以直接使用它。The culprit may be the
getMinimumText
function inmx.controls.Label
--essentially it enforces a 2 character minimum width on labels (specifically, measures any 0 or 1 character labels as if they contained "Wj").To see if that's it, try replacing your "12" text with "Wj" and see if they come out the same size.
getMinimumText
is overridden inSliderLabel
to make the minimum 1 character ("W") instead. I assume it does that to allow centering of 1 character labels (over slider ticks). That's all SliderLabel does, so you might just use it instead.如果您没有在容器上设置宽度,则它只会根据内容需要的大小而定。尝试在每个
HBox
容器上设置宽度 - 显式设置,如width="50"
或百分比,如width="100%"< /代码>。百分比宽度将使
HBox
填充父VBox
的宽度。或者
尝试一下......
If you don't set a width on a container, it is only going to be as big as the contents need it to be. Trying setting a width on each of the
HBox
containers - explicit, as inwidth="50"
, or percentage, as inwidth="100%"
. A percentage width will make theHBox
fill the width of the parentVBox
.or
Give it a shot....