带有图标的Flex文本输入,如mac os x搜索文本输入

时间:2010-03-24 21:10:20

标签: flex flex3 textinput

我正在尝试扩展flex中的文本输入以支持图标,就像mac os x搜索文本输入有一个右边对齐的灰色圆圈,文本输入有一个addChild方法,但它没有'为我工作。

有没有办法做到这一点?

提前致谢

2 个答案:

答案 0 :(得分:1)

更简单的方法是创建一个看起来像所需文本输入的mxml组件。我从来没有见过mac OSX搜索框,但根据你的描述,一个基于画布的组件带有白色背景,然后适当的边框可以包含图像和没有边框的文本输入。这会让你看起来像我想的那样。

答案 1 :(得分:1)

我找到了一个解决方案:D这里是代码

技巧是覆盖updateDisplayList。

快乐的黑客攻击。

package
{
import flash.display.DisplayObject;

import mx.controls.Image;
import mx.controls.TextInput;
import mx.core.mx_internal;

use namespace mx_internal;

public class MyTextInput extends TextInput
{
    private var _image:Image;

    public function MyTextInput()
    {
        super();
    }

    override protected function createChildren():void
    {
        super.createChildren();

        _image = new Image();
        _image.source = "http://sstatic.net/so/img/replies-off.png",

        addChild(DisplayObject(_image));
    }

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        this._image.width = 16;
        this._image.height = 16;

        this._image.x = this.width - this._image.width - 5;
        this._image.y = this.height - this._image.height;

        this.textField.width = this.width - this._image.width - 5;
    }
}
}