2010-03-29 4 views
2

Я ищу реализовать текстовое поле поиска следующим образом:прогибается выпадающей скрыть и показать стрелку вниз

Когда пользователь начинает вводить в и есть ненулевые результаты, текстовое окно откроется, и отображать результаты ниже Это. Когда пользователь выбирает результат, текстовое поле закрывается, но на этот раз со стрелкой вниз (например, со списком), чтобы пользователь мог повторно открыть список.

Я подозреваю, что мне действительно нужна сводка с возможностью скрыть/показать стрелку вниз. Как это сделать в Flex?

Заранее благодарен.

ответ

3

я узнал легкий способ сделать это:

SetStyle ("arrowButtonWidth", 0);

В моем пользовательском выпадающем списке, я установил начальную ширину кнопки со стрелкой 0.

Тогда в случае изменения списка,

addEventListener(ListEvent.CHANGE, changeHandler); 

если размер DataProvider больше 1, ширина стрелки установлена ​​на (скажем) 20

setStyle("arrowButtonWidth", 20); 

Этот подход намного проще, чем вышеприведенные подходы. Если вы знаете какую-либо ошибку моего подхода, пожалуйста, поделитесь.

0

Как создать простой пользовательский холст с обоими компонентами (textinput и combo) с двумя состояниями. Вы показываете текст в одном состоянии и комбо в другом состоянии?

<?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> 
0

Вы также можете создать пользовательский скин для любого случая, доступ к которому можно будет изменить, изменив имя стиля. Это потенциально может быть меньшим весом, чем решение пользователя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 на тот, который показывает стрелка, в противном случае установите его на тот, который не показывает стрелка.

Смежные вопросы