使Spark ButtonBar像MX ToggleButtonBar一样运作 - Flex 4

3

大家好,我有以下代码来定义一个Spark中的按钮栏控件:

<s:ButtonBar id="tabs" y="15" left="0" height="31" change="VideosMenuBar_changeHandler(event)">  
        <s:ArrayCollection>
            <fx:String>Latest Videos</fx:String>
            <fx:String>Last Week Videos</fx:String>
            <fx:String>Last Month Videos</fx:String>
        </s:ArrayCollection>
</s:ButtonBar>

我有一些关于IT技术的问题:

1)如何让这个按钮栏像mx ToggleButtonBar一样反应,即当我按两次按钮时不会失去其状态,而是保持它并仅在我按下另一个按钮时才更改?

2)如何定义默认按下的按钮?

3)最后,我在我的应用程序中应用了Flex的现成皮肤,这使得我的按钮在悬停、选定等方面具有某些属性,如何通过新的皮肤定义自己的属性?我可以为我的按钮栏定义新属性,以免受到皮肤中声明的属性的影响吗?还是我必须改变皮肤中的某些内容?如何做到这一点?

非常感谢您的帮助!


1
问题1已回答!这是s:ButtonBar的requireSelection="true"属性。 - sstauross
1个回答

4
  1. 确实。requireSelection="true"
  2. ButtonBar扩展了List,因此设置selectedIndex属性应该可以工作
  3. 我不太确定你的意思,但是你可以使用CSS更改按钮栏中按钮的外观:

    s|ButtonBarButton { skin-class: ClassReference("my.skin.class"); }

或者您可以通过创建自己的ButtonBarSkin来选择自定义按钮实现以引用您的按钮。

<fx:Declarations>
    <fx:Component id="firstButton">
        <you:MyLastButton />
    </fx:Component>

    <fx:Component id="middleButton" >
        <you:MyLastButton />
    </fx:Component>

    <fx:Component id="lastButton" >
        <you:MyLastButton />
    </fx:Component>
</fx:Declarations>

请查看Spark自带的ButtonBarSkin以获取一个好的示例,并确保这些按钮至少实现了IItemRenderer接口或仅扩展ButtonBarButton。

非常感谢您的回答!我的第三个问题是:我在我的应用程序中应用了一个主题,它在许多组件中都具有自己的特点,例如按钮、列表、按钮栏等等。我的问题是,即使通过CSS设置了主题,我是否可以在某些组件上添加自己的特点,例如按钮或按钮栏按钮,或者创建自己的样式?这些特点会应用于这些组件吗?还是我需要禁用主题? - sstauross
在 Spark Button 上设置的皮肤集(在主 CSS 文件中设置?)不应影响 ButtonBar 中的按钮,因为这些是 ToggleButton,它们需要单独的皮肤。此外,这些 ButtonBar 按钮的皮肤是在 ButtonBarSkin 中设置的,因此设置 ToggleButtons 的“全局”皮肤也不会影响 ButtonBar 按钮。您应该像上面所示一样在自定义 ButtonBarSkin 中设置它们。 - Treur
它不是一种皮肤,而是来自那些Flash Builder提供的主题,我已经应用了其中一个并且更改了我的应用程序中的许多组件,具体来说,它是GraphiteGraphical主题...我的问题是:我应该找到它的文件并更改我想要更改的特定组件(比如按钮),还是如果我创建一个新的皮肤并将其应用于按钮,它会比主题中定义的属性更强大?希望现在更清晰了... - sstauross
哦,好的。嗯,我不熟悉这种主题,所以我不太清楚。你可以尝试上面的方法,或者你可以在另一个问题中问一下,但肯定会有人能帮助你的 :) - Treur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接