Flex TextInput 控件:搜索样式渲染

Posted

技术标签:

【中文标题】Flex TextInput 控件:搜索样式渲染【英文标题】:Flex TextInput Control: Search Style rendering 【发布时间】:2010-11-06 17:27:51 【问题描述】:

我有一个 TextInput 控件,它具有系统中人员的搜索功能。 它工作正常。我所需要的只是以这样的方式设置它的样式,它将在右侧具有搜索图像,单击该图像时将进行搜索。它实际上是应用程序的外观部分,这将使搜索框看起来更好。

这与嵌入在 Firefox 中的搜索框实现的行为完全相同。

有什么解决办法吗?

谢谢:)

【问题讨论】:

在 Flex 4 Spark TextInput 中,您可以将 skinClass 设置为您自己的自定义 TextInputSkin。在皮肤中,您可以使用基本布局将搜索图标图像放置在您想要的位置。在这种情况下,将图标锚定到右边缘并将 labelDisplay 宽度设置为 100%。然后在 labelDisplay 中添加额外的 paddingRight 以防止文本与图标重叠。 【参考方案1】:

确认,避免子类化。跳出框框思考,使用画布:

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

如果你想让它更整洁,那就让它本身成为一个组件。在 MXML 中和在其他地方一样,优先考虑组合而不是继承。

【讨论】:

【参考方案2】:
<mx:HBox>
    <mx:TextInput id     = "txtSearch"/>
    <mx:Image source     = "yourSearchIcon.png" 
              click      = "doSearch()" 
              buttonMode = "true"/>
</mx:HBox>

就是这样!

【讨论】:

这就是我现在拥有的...我需要嵌入/包含在搜索文本输入本身中的图像,并且需要摆脱搜索按钮 ' 会尝试但是,我们不能渲染 textinput 控件以在文本框中的特定位置添加图像吗? @online19 - 您需要继承 TextInput 对象,并且 1) 在 TextInput 子类的 UITextField 中包含和定位图像; 2)包含代码以将其保存在正确的位置。如果我明天早上有时间,我会看看我是否能想出一个可发布的答案。 @rhtx - 你有没有尝试过这个?我还没有尝试过。整个星期都很忙。 '将尝试这个并发布它如果它有效【参考方案3】:

您可以编写一个 TextInput 类的子类,它具有“yourSearchIcon”图像的图像,例如:

[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);

显然你必须处理调整大小事件

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

    

这是你的自定义组件

【讨论】:

【参考方案4】:

希望此代码对您有所帮助。此代码在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);



【讨论】:

以上是关于Flex TextInput 控件:搜索样式渲染的主要内容,如果未能解决你的问题,请参考以下文章

使用 flex css 样式时的自定义控件宽度

在 Flex 中处理 TextInput 的宽度和样式

为不可编辑的 textinput 和 textarea flex 组件设置样式

想要在 Flex 的 Spark textinput 控件中设置光标位置

如何允许用户在 Flex TextInput 控件中键入 TAB 字符?

带有TextInput和按钮的Flex警报