Flex button icon动态设置

本文介绍了一种在Flex中解决按钮图标颜色显示异常的方法。作者最初尝试使用Graphics绘制黑色下拉箭头,但发现实际显示为灰色。为了避免这一问题,通过使用外部PNG文件作为图标,并根据状态动态切换图标样式。

前段时间写了个datagrid的多列下拉选取控件: MultiDropDownItemEditor,该itemeditot实际上就是一个Hbox包含了一个文本框及按钮,如下所示:

<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009"

xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/mx"

height="23" width="120" horizontalAlign="center"

horizontalGap="1"

paddingTop="0" paddingBottom="0" verticalGap="0"

implements="mx.controls.listClasses.IDropInListItemRenderer" creationComplete="init()">

<s:TextInput id="_text" width="100%" height="100%" x="0" y="0" editable="false" paddingBottom="0" paddingTop="0"/>

<mx:Button id="button1" label="" width="20" height="100%" click="button1_clickHandler(event)" />

</mx:HBox>

一开始,按钮button1的下拉图标是用graphics自己画了个黑色三角形,但是实际运用过程当中却发现,明明画的是黑色三角形,显示的却是灰色三角形,画三角形代码如下:

var g:Graphics = button1.graphics;

g.beginFill(0x000000,1);

g.moveTo(5,7);

g.lineTo(15,7);

g.lineTo(10,15);

g.lineTo(5,7);

g.endFill();

正常黑色下拉图标的按钮却被显示成灰色下拉按钮,用户还以为该按钮不能使用呢,已经误导用户正常使用表格的多列下拉,迫于时间关系,就没去深究为什么Graphics填充的明明是黑色,却显示成灰色,第一反应应该是button的默认css惹的祸。

于是,通过设置buttonicon style来变通实现按钮的下拉图标,操作如下:

1)准备2png图片,分别是黑色下拉图标和灰色下拉图标;

2)预定义icon,如下:

[Bindable]

[Embed(source="assets/tool_updown.png")]

private var updown_enable:Class;

[Bindable]

[Embed(source="assets/Snap2gray.png")]

private var updown_disable:Class;

3)根据条件设置button1iconupdown_disableupdown_enable,如下:

btnOK.setStyle("icon",updown_enable);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值