2009-06-29 8 views
1

J'ai un contrôle TextInput qui a une fonctionnalité de recherche pour les personnes dans le système. Cela fonctionne très bien. Tout ce dont j'ai besoin, c'est de le styliser de telle manière que l'image de recherche apparaisse sur la droite, qui, une fois cliquée, va chercher. C'est en fait pour l'aspect et la convivialité de l'application, ce qui rendra le champ de recherche beaucoup mieux.Flex TextInput Control: Rendu de style de recherche

C'est exactement le même comportement implémenté dans la boîte de recherche intégrée dans Firefox.

Une solution à cela?

Merci :)

+0

Dans Flex 4 Spark TextInput, vous pouvez définir skinClass sur votre propre TextInputSkin personnalisé. Dans la peau, vous pouvez positionner l'image de l'icône de recherche où vous souhaitez utiliser la mise en page de base. Dans ce cas, ancrez l'icône sur le bord droit et définissez la largeur de l'étiquette sur 100%. Ajoutez ensuite paddingRight supplémentaire à labelDisplay pour empêcher le texte de chevaucher l'icône. –

Répondre

1
<mx:HBox> 
    <mx:TextInput id  = "txtSearch"/> 
    <mx:Image source  = "yourSearchIcon.png" 
       click  = "doSearch()" 
       buttonMode = "true"/> 
</mx:HBox> 

C'est tout!

+0

C'est ce que j'ai en ce moment ... J'ai besoin de l'image intégrée/incluse dans la recherche de texteInput, et doit se débarrasser du bouton de recherche – online19

+0

Ensuite, faites juste ce qui suit .. –

+0

va essayer cela Mais, ne pouvons-nous pas rendre le contrôle textinput pour ajouter une image à une certaine position dans la zone de texte? – online19

0

Vous pouvez écrire une sous-classe de TextInput classe qui a comme une image pour l'image "de yourSearchIcon" tels que:

[Embed(source='../../libs/graphic_elements.swf#search_ico')] 
private var searchIcon:Class; 
private var searchImg:Image = new Image(); 

private function onCreationComplete(event:Event) : void { 
    searchImg.source = searchIcon; 
    searchImg.x = this.width - 40; 
    this.addChild(searchImg); 
    this.addEventListener(ResizeEvent.RESIZE, onResize); 
} 

est évident que vous devez gérer l'événement resize

private function onResize(event:ResizeEvent) : void { 
     searchImg.x = event.currentTarget.width - 40; 

    } 

C'est votre commande composant

+0

semble bon! Laisse-moi essayer ça. – online19

2

Acq, éviter le sous-classement. Sortez des sentiers battus, pour ainsi dire, et d'utiliser une toile:

<mx:Canvas> 
    <mx:TextInput change="doSearchFor(event.currentTarget.text)" /> 
    <mx:Image source="search_icon.png" verticalCenter="0" right="5" /> 
</mx:Canvas> 

Ensuite font qu'un composant lui-même si vous voulez faire plus propre. Favoriser la composition sur l'héritage, en MXML comme ailleurs.

0

J'espère que ce code vous aidera. Ce code ajoute une icône de recherche à gauche du TextInput.

public class SearchInputBox extends TextInput 
{ 

[Embed(source='../../../../assets/images/icons/searchIcon.png')] 
private var searchIcon:Class; 
private var searchImg:Image;   

override protected function createChildren():void 
{ 
     super.createChildren(); 
     searchImg = new Image(); 
     searchImg.source = searchIcon; 
     searchImg.width=15; 
     searchImg.height=15; 
     searchImg.x = 2; 
     searchImg.y = 3; 

     setStyle("paddingLeft",searchImg.width+2); 
     addChild(searchImg); 

} 
} 
+0

Merci Arun. vais essayer ça – online19

Questions connexes