Я хочу добавить значок поиска в искровой элемент управления TextInput. Есть ли способ, с помощью которого я могу расширить элемент управления TextInput и добавить к нему дочерний элемент.
Спасибо
Вы не должны расширять TextInput.Главная сила архитектуры Spark - возможность снятия шкур.Вы можете создать свой собственный скин на основе стандартного TextInputSkin и разместить иконку там.Я думаю, что не будет никаких проблем.
TextInput
TextInputSkin
Я столкнулся с той же проблемой, желая получить значок поиска в искровом TextInput. Было очень просто скопировать существующий скин и добавить иконку к нему. Вот как это сделать:
Последний раздел в файле скина - <!-- text -->. ПОСЛЕ этого раздела создайте новый раздел для <!-- search icon -->, который включает следующее (примечание: это будет последний раздел в скине):
<!-- text -->
<!-- search icon -->
<s:Image id="iconDisplay" source="@Embed('path/to/image/file/MY_SEARCH_IMAGE.png')" mouseEnabled="false" mouseChildren="false" visible.normal="false" visible.normalWithPrompt="true"/>
Измените массивы исключений, которые появляются ранее в файле, чтобы он выглядел следующим образом (примечание: следующий код уже существует в файле, просто добавьте к нему iconDisplay, как показано):
iconDisplay
/* Define the skin elements that should not be colorized. */ static private const exclusions:Array = ["background", "textDisplay", "promptDisplay", "iconDisplay", "border"];
/* exclusions before Flex 4.5 for backwards-compatibility purposes */ static private const exclusions_4_0:Array = ["background", "textDisplay", "promptDisplay", "iconDisplay",];
Перейдите код приложения, где у вас есть компонент TextInput, и свяжите его со скином, используя: <s:TextInput ... skinClass="path.to.skins.TextInputSkinWithPromptIcon" prompt=" "/>
<s:TextInput ... skinClass="path.to.skins.TextInputSkinWithPromptIcon" prompt=" "/>