Alas, the only solution I know is to draw the background yourself, using Programmatic Skinning -- specifically, orderriding RectangularBorder::
package
{
import mx.skins.RectangularBorder;
public class HBoxSkin extends RectangularBorder
{
public function HBoxSkin()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var cr:Number = getStyle("cornerRadius");
var bc:Number = getStyle("backgroundColor");
graphics.clear();
graphics.beginFill(bc, 1);
// Draw the rectangle manually, rounding only the top two corners
graphics.drawRoundRectComplex(0, 0, unscaledWidth, unscaledHeight, cr, cr, 0, 0);
graphics.endFill();
}
}
}
... and then applying the change using the borderSkin property of your HBox:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<!-- Apply the skin using the borderSkin property of your HBox -->
<mx:HBox borderSkin="HBoxSkin" backgroundColor="#FFFFFF" cornerRadius="10" height="100" width="100" top="10" left="10" />
</mx:Application>
The Flex Documentation gives an example of how to implement programmatic skinning. It's beyond beginner level, unfortunately (this stuff gets a lot easier in Flex 4), but if you follow the code in my example and in the documentation's, you should be able to get something together. Good luck!