flex combobox hide并显示向下箭头

时间:2010-03-29 05:37:29

标签: flex combobox show-hide

我希望按如下方式实现搜索文本框:

当用户开始输入并且结果非零时,文本框将打开并显示其下方的结果。 当用户选择结果时,文本框关闭,但这次使用向下箭头(如组合框),以便用户可以重新打开列表。

我怀疑我真正需要的是一个能够隐藏/显示向下箭头的组合框。我如何在Flex中执行此操作?

提前致谢。

3 个答案:

答案 0 :(得分:3)

我发现了一种简单的方法:

setStyle(“arrowButtonWidth”,0);

在我的自定义组合框中,我将箭头按钮的初始宽度设置为0.

然后在List change事件中,

  addEventListener(ListEvent.CHANGE, changeHandler);

如果dataprovider的大小大于1,则箭头宽度设置回(比方说)20

  setStyle("arrowButtonWidth", 20);

这种方法比上述方法简单得多。如果您知道我的方法有任何陷阱,请分享。

答案 1 :(得分:0)

如何使用两个状态创建包含两个组件(textinput和combo)的简单自定义画布。 您在一个状态下显示textinput而在另一个状态下显示组合?

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
    <mx:states>
        <mx:State name="combo">
            <mx:RemoveChild target="{textinput1}"/>
            <mx:AddChild position="lastChild">
                <mx:ComboBox x="48" y="10"></mx:ComboBox>
            </mx:AddChild>
        </mx:State>
    </mx:states>
    <mx:TextInput x="48" y="10" id="textinput1"/>
    <mx:Label x="10" y="12" text="Text"/>

</mx:Canvas>

答案 2 :(得分:0)

您还可以为这两种情况提供自定义按钮外观,可以通过更改styleName来访问它。这可能比用户294702的解决方案更轻。

例如,为源和符号使用虚拟名称:

.comboBoxWithArrow {
  up-skin: Embed(source="graphics.swf",symbol="comboArrowUp");
  down-skin: Embed(source="graphics.swf",symbol="comboArrowDown");
  over-skin: Embed(source="graphics.swf",symbol="comboArrowOver");
  disabled-skin: Embed(source="graphics.swf",symbol="comboArrowDisabled");
  /* and any other skin states you want to support */
}

.comboBoxWithoutArrow {
  up-skin: Embed(source="graphics.swf",symbol="comboNoArrowUp");
  down-skin: Embed(source="graphics.swf",symbol="comboNoArrowDown");
  over-skin: Embed(source="graphics.swf",symbol="comboNoArrowOver");
  disabled-skin: Embed(source="graphics.swf",symbol="comboNoArrowDisabled");
  /* and any other skin states you want to support */
}

如果您的条件允许,请将styleName设置为显示箭头的样式,否则将其设置为不显示箭头的样式。