您可以创建一个PopUpAnchor
扩展自 的自定义类PopUpAnchor
,并覆盖其 determinePosition 函数以修改其PopUpPosition.BELOW
行为方式:
override mx_internal function determinePosition(placement:String,
popUpWidth:Number, popUpHeight:Number,matrix:Matrix,
registrationPoint:Point, bounds:Rectangle):void
{
switch(placement)
{
case PopUpPosition.BELOW:
registrationPoint.x = -popUpWidth + unscaledWidth;
registrationPoint.y = unscaledHeight;
break;
case PopUpPosition.ABOVE:
registrationPoint.x = 0;
registrationPoint.y = -popUpHeight;
break;
case PopUpPosition.LEFT:
registrationPoint.x = -popUpWidth;
registrationPoint.y = 0;
break;
case PopUpPosition.RIGHT:
registrationPoint.x = unscaledWidth;
registrationPoint.y = 0;
break;
case PopUpPosition.CENTER:
registrationPoint.x = (unscaledWidth - popUpWidth) / 2;
registrationPoint.y = (unscaledHeight - popUpHeight) / 2;
break;
case PopUpPosition.TOP_LEFT:
// already 0,0
break;
}
}
设置registrationPoint.x = -popUpWidth + unscaledWidth
使其与按钮的右边缘对齐。
在你的DropDownList
皮肤PopUpAnchor
中用你新创建的类替换标签,你应该有一个DropDownList
按照你要求的行为。
也许有一种更理智的方法可以做到这一点,但我宁愿花时间不去找出那是什么。