0

我有一组按钮添加到我的 flex 移动应用程序的阶段...我使用“icon”参数在这些按钮上设置了透明的 PNG 图标,但想知道是否有办法隐藏灰色框标准按钮元素?这样我的按钮只会显示为我在按钮上设置的图标......或者是实现按钮皮肤和创建样式的唯一方法(我仍然没有完全掌握。

提前致谢。

4

1 回答 1

3

有很多方法可以做到这一点。正如 Flextras 所说,您可以删除普通 SparkButtonSkin绘制的所有内容。但是,这并不是那么简单,因为如果您查看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>

另一种解决方法是根本不使用 Button。您可以通过将 BitmapImage 对象用于您的按钮来制作一个更轻量级的版本,该版本就像一个简单的按钮。你必须添加一些交互性(比如可能换掉它用于鼠标按下的图标等)。

<s:BitmapImage source="path/to/my/icon" click="clickHandler()" />
于 2013-03-08T03:58:07.980 回答