Flex - 标签布局问题:较短的文本意味着较宽的标签

发布于 2024-08-23 16:24:13 字数 510 浏览 6 评论 0原文

有人知道为什么以下代码会导致第一个标签比第二个标签宽吗?第一个框(较短的文本)宽度为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青春如此纠结 2024-08-30 16:24:13

罪魁祸首可能是 mx.controls.Label 中的 getMinimumText 函数——本质上它在标签上强制执行 2 个字符的最小宽度(具体来说,测量任何 0 或 1 个字符的标签,如如果它们包含“Wj”)。

要查看是否是这样,请尝试将“12”文本替换为“Wj”,然后查看它们的大小是否相同。

getMinimumTextSliderLabel 中被重写,以改为最少 1 个字符(“W”)。我认为这样做是为了允许 1 个字符标签居中(在滑块刻度上)。这就是 SliderLabel 所做的全部工作,因此您可以直接使用它。

The culprit may be the getMinimumText function in mx.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 in SliderLabel 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.

梨涡 2024-08-30 16:24:13

如果您没有在容器上设置宽度,则它只会根据内容需要的大小而定。尝试在每个 HBox 容器上设置宽度 - 显式设置,如 width="50" 或百分比,如 width="100%"< /代码>。百分比宽度将使 HBox 填充父 VBox 的宽度。

<mx:VBox>
    <mx:HBox id="lbl1" backgroundColor="#6789ad" width="50">
        <mx:Label fontWeight="bold" color="white" text="0" />
    </mx:HBox>
    <mx:HBox id="lbl3" backgroundColor="#6789ad" width-"50">
        <mx:Label fontWeight="bold" color="white" text="12" />
    </mx:HBox>
</mx:VBox>

或者

<mx:VBox width="50">
    <mx:HBox id="lbl1" backgroundColor="#6789ad" width="100%">
        <mx:Label fontWeight="bold" color="white" text="0" />
    </mx:HBox>
    <mx:HBox id="lbl3" backgroundColor="#6789ad" width="100%">
        <mx:Label fontWeight="bold" color="white" text="12" />
    </mx:HBox>
</mx: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 in width="50", or percentage, as in width="100%". A percentage width will make the HBox fill the width of the parent VBox.

<mx:VBox>
    <mx:HBox id="lbl1" backgroundColor="#6789ad" width="50">
        <mx:Label fontWeight="bold" color="white" text="0" />
    </mx:HBox>
    <mx:HBox id="lbl3" backgroundColor="#6789ad" width-"50">
        <mx:Label fontWeight="bold" color="white" text="12" />
    </mx:HBox>
</mx:VBox>

or

<mx:VBox width="50">
    <mx:HBox id="lbl1" backgroundColor="#6789ad" width="100%">
        <mx:Label fontWeight="bold" color="white" text="0" />
    </mx:HBox>
    <mx:HBox id="lbl3" backgroundColor="#6789ad" width="100%">
        <mx:Label fontWeight="bold" color="white" text="12" />
    </mx:HBox>
</mx:VBox>

Give it a shot....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文