Есть множество способов сделать это. Как сказал Flextras, вы можете просто удалить все, что рисует обычный Spark ButtonSkin
. Однако это не так просто, потому что, если вы посмотрите на класс ButtonSkin
, у него нет объекта BitmapImage
, который кнопка использует для отображения вашего значка. Этот BitmapImage
на самом деле определен в базовом классе для ButtonSkin
(то есть SparkButtonSkin
).
К счастью, это достаточно просто исправить. Ниже приведен скин, который расширяет базовый класс и добавляет обратно BitmapImage. Причина, по которой я добавляю его обратно,
- вы не можете использовать базовый класс сам по себе (он не определяет требуемые состояния и выдает ошибку во время выполнения
- вы, вероятно, хотите добавить некоторую интерактивность к своей кнопке - при наведении мыши, наведении мыши и т. д. В моем простом примере ниже эта интерактивность довольно дрянная, я оставлю вам решать, что должно происходить при наведении мыши, мыши вниз и тд...
Скин, расширяющий SparkButtonSkin
:
<?xml version="1.0" encoding="utf-8"?>
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
minWidth="21" minHeight="21"
alpha.disabled="0.5">
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<s:BitmapImage id="iconDisplay" alpha=".75" alpha.over="1" alpha.down=".5" alpha.disabled=".25" />
</s:SparkButtonSkin>
Другой способ сделать это — вообще не использовать кнопку. Вы можете сделать гораздо более легкую версию, которая ведет себя как простая кнопка, используя объект BitmapImage для вашей кнопки. Вам нужно будет добавить некоторую интерактивность (например, заменить значок, который он использует для нажатия мыши и т. Д.).
<s:BitmapImage source="path/to/my/icon" click="clickHandler()" />
person
Sunil D.
schedule
08.03.2013