我想要自定义组合框。 事实上,我喜欢创建一个组合框,其中两个数组由一条线分开。
全部和 40 以上之间的线必须不可选择。
你知道怎么做吗?
感谢您的帮助
最佳答案
假设我们有一个具有如下模型的 ComboBox:
<s:ComboBox>
<s:ArrayList>
<fx:String>A</fx:String>
<fx:Object />
<fx:String>B</fx:String>
</s:ArrayList>
</s:ComboBox>
字符串是我们的常规元素,对象代表分隔符。我在这里简化了事情,但您应该能够将其转化为您的具体情况。
现在我们要为每种类型的元素分配不同的 ItemRenderer。我们可以通过 itemRendererFunction
属性来做到这一点。
<s:ComboBox itemRendererFunction="getItemRenderer">
private function getItemRenderer(item:*):IFactory {
var renderer:Class = item is String ? DefaultItemRenderer : SeparatorItemRenderer
return new ClassFactory(renderer);
}
现在让我们创建 SeparatorItemRenderer
,它将仅包含一条水平线,并将其 enabled
属性设置为 false
。最后一部分非常重要,因为它会使该项目不可选择。
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
autoDrawBackground="false" enabled="false"
height="10" disabledAlpha="1">
<s:Line left="0" right="0" verticalCenter="0">
<s:stroke>
<s:SolidColorStroke color="0xdddddd" />
</s:stroke>
</s:Line>
</s:ItemRenderer>
这样就可以了。
关于actionscript-3 - 创建具有不可选择分隔符的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10728530/