2

我希望实现一个搜索文本框,如下所示:

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

我怀疑我真正需要的是一个能够隐藏/显示向下箭头的组合框。我如何在 Flex 中做到这一点?

提前致谢。

4

3 回答 3

3

我发现了一个简单的方法来做到这一点:

setStyle("箭头按钮宽度", 0);

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

然后在列表更改事件中,

  addEventListener(ListEvent.CHANGE, changeHandler);

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

  setStyle("arrowButtonWidth", 20);

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

于 2010-05-21T17:46:25.283 回答
0

如何创建一个具有两个状态的组件(文本输入和组合)的简单自定义画布。您在一种状态下显示 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>
于 2010-03-29T10:08:34.240 回答
0

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

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

.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 设置为显示箭头的名称,否则将其设置为不显示箭头的名称。

于 2010-03-29T12:48:50.630 回答