我希望按如下方式实现搜索文本框:
当用户开始输入并且结果非零时,文本框将打开并显示其下方的结果。 当用户选择结果时,文本框关闭,但这次使用向下箭头(如组合框),以便用户可以重新打开列表。
我怀疑我真正需要的是一个能够隐藏/显示向下箭头的组合框。我如何在Flex中执行此操作?
提前致谢。
答案 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设置为显示箭头的样式,否则将其设置为不显示箭头的样式。