【问题标题】:Groups ignore underlying component's maxwidth组忽略底层组件的最大宽度
【发布时间】:2016-10-24 13:02:06
【问题描述】:

在下面的代码中,您可以看到我有 2 个相同的边界容器(bordercontainer1 和bordercontainer2),每个容器都有一个周边组(surroundinggroup1 和周边组2)。

边框容器的最大宽度为 250 像素,宽度为 100%。 基本上,我希望它们最多占用 250 像素的空间,但如果可用空间较少,请尽可能多地占用。

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:HGroup id="maingroup" width="100%">
        <s:Group id="surroundinggroup1">
            <s:BorderContainer id="bordercontainer1" height="50" maxWidth="250" width="100%">
                <s:Label text="test"/>
            </s:BorderContainer>        
        </s:Group>
        <s:Group id="surroundinggroup2">
            <s:BorderContainer id="bordercontainer2" height="50" maxWidth="250" width="100%">
                <s:Label text="test"/>
            </s:BorderContainer>        
        </s:Group>
    </s:HGroup>
</s:WindowedApplication>

问题是周围组似乎忽略了 maxwidth 并使用绘制边框容器所需的最小宽度,以便包含“test”的标签适合:

我认为将周围组的宽度设置为 100% 可以解决问题,但这会导致周围组占用尽可能多的空间,从而导致 2 个边界容器之间出现间隙:

唯一的解决方案似乎是删除周边组,然后布局是我想要的:

这里的问题是,在实际应用中,这些周围的组包含一些其他的组件和逻辑。删除它们可能会导致其他一些变化。 有没有办法在保持这些周围群体的同时达到预期的结果(图 3)?

【问题讨论】:

    标签: apache-flex layout width


    【解决方案1】:

    这应该可以解决问题,出于某种原因,我认为您不希望对周围组进行大小限制,但这只是我的想法。我将 maxWidth 和 100% 移到了 surroudinggroups,Bordercontainer width="100%" 对于你想要的也很重要。

    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx">
        <s:HGroup id="maingroup" width="100%" >
            <s:Group id="surroundinggroup1" maxWidth="250" width="100%">
                <s:BorderContainer id="bordercontainer1" height="50" width="100%">
                    <s:Label text="test"/>
                </s:BorderContainer>        
            </s:Group>
            <s:Group id="surroundinggroup2" maxWidth="250" width="100%">
                <s:BorderContainer id="bordercontainer2" height="50" width="100%">
                    <s:Label text="test"/>
                </s:BorderContainer>        
            </s:Group>
        </s:HGroup>
    </s:WindowedApplication>
    

    【讨论】:

    • 不,我希望它们最多占用 250 像素的空间,但如果可用空间较少,则只占用所需的空间。如果我将标签设置为 250,并且我的容器小于 250,则边界容器将继续在容器之外。我想让它缩小。但是,如果有 250 个像素可用,那就全部拿走。我希望这可以澄清它,这并不容易解释..
    • 我知道你现在想要什么了。我还没有解决方案,但问题不在于它忽略了 maxWidth,而是它没有使用 width="100%"(尽管它是)。 maxWidth 仅限制超过 250 的宽度,但它永远不会调整到它的大小,直到宽度超过 250 才有效。 width=100% 也按预期工作,但相对于周围组为 100%,没有设置宽度。这就是它需要最小尺寸的原因。如果我有更多时间,我会找到解决方案,如果没有,我希望你能用这些信息做点什么。
    • 罗宾说的没错。不管怎样,感谢您的宝贵时间!
    • 感谢 Robin 回到这里,这是正确的解决方案!
    猜你喜欢
    • 2016-10-11
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    相关资源
    最近更新 更多