BorderContainer Corner Rounding仅在顶部或底部

Ste*_*own 2 apache-flex flex4 flex4.5

我需要在边框容器的顶部或底部四舍五入,而不是所有四个角,是我可以使用的一些CSS,或者我必须创建两个新皮肤.在过去,我正在阅读他们曾经是HBox的财产,他们现在不是BorderContainer的财产吗?

RIA*_*tar 9

使用BorderContainer你不能.但是,可以使用SkinnableContainer和自定义外观轻松创建要实现的视觉效果.事实上,BorderContainer只是SkinnableContainer的一种特定形式.

因此,而不是BorferContainer创建一个具有属性'skinClass'的SkinnableContainer:

<s:SkinnableContainer left="0" right="0" top="0" bottom="0" 
                      skinClass="my.app.skins.TopRoundedCornerSkin">
    <!--- your components go here --->
</s:SkinnableContainer>
Run Code Online (Sandbox Code Playgroud)

然后像这样创建皮肤类TopRoundedCornerSkin.mxml:

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark">

    <fx:Metadata>
        [HostComponent("spark.components.SkinnableContainer")]
    </fx:Metadata> 

    <s:states>
        <s:State name="normal" />
        <s:State name="disabled" />
    </s:states>

    <s:Rect id="background" left="0" right="0" top="0" bottom="0" 
            topLeftRadiusX="10" topLeftRadiusY="10" 
            topRightRadiusX="10" topRightRadiusY="10">

        <s:fill>
            <s:SolidColor color="0xffffff" />
        </s:fill>
        <s:stroke>
            <s:SolidColorStroke color="0x000000" />
        </s:stroke>
    </s:Rect>

    <s:Group id="contentGroup" left="10" right="10" top="10" bottom="10" 
             minWidth="0" minHeight="0" />

</s:Skin>
Run Code Online (Sandbox Code Playgroud)

在背景矩形上,我们设置了4个半径属性来创建您需要的圆角.