2010-12-21 123 views
0

我有一个带有可变长度标签文本的按钮。我有一个用户设置,可以打开或关闭此按钮上的标签文本。Flex:隐藏(或删除)标签文本而不更改按钮大小

我该如何执行此操作?

注意:该按钮的背景具有渐变色。

我试过使用BlendMode.LAYER,没有运气;

我尝试使用Button.resizeHandler

private function resizeHandler(event:ResizeEvent):void 
    { 
     if (event.oldWidth > this.width) 
      this.width = event.oldWidth; 
     if (event.oldHeight > this.height) 
      this.height = event.oldHeight; 
    } 

但如果初始UserSetting值为true它只是工作。

嵌入字体怎么样?我不知道如何将它应用到按钮

回答

0

您可以扩展mx.controls.Button以添加显示/隐藏标签功能。文本字段是受保护的属性,因此您只需在函数中设置开启/关闭的可见性即可。让Flex自己衡量一切正确。

如果您想在文本打开或关闭时增大/缩小按钮,还可以设置按钮宽度。您将不得不根据文本字段宽度来计算宽度。

+0

最后我放弃了按钮本身的工作。我扩展了一个画布,并放置两个按钮来模拟我需要的东西。 – 2010-12-21 18:28:59

0

如果你只是设置按钮的宽度会发生什么?这样,无论您将其设置为标签,它都应该保持恒定的宽度。

最可能的宽度是在updateDisplayList方法中计算的。所以,你的resize处理程序中的代码可能会在下一个渲染事件中被重置。

+0

我想为不同的文本按钮有不同的宽度,所以没有办法获得宽度。 – 2010-12-21 01:23:32

+0

@Peter Lee:那么,你想要什么行为?如果您不想指定固定的按钮宽度,我只会看到适合您需要的行为:将按钮增大到最长的文本,但永远不会缩小...或允许文本在按钮内换行。除了将宽度固定为较大尺寸外,还不清楚您实际上希望使用此按钮。 – 2010-12-21 01:40:57

+0

@Peter Lee查看getExplicitOrMeasuredHeight()和getExplicitOrMeasuredWidth()方法或measuredWidth/measuredHeight。如果将按钮上的标签分别设置为measuredWidth和measuredHeight,则将宽度和高度设置为measuredWidth和measuredHeight;它应该在标签被移除时保留适当的尺寸。 (假设你有代码来防止当标签不存在时调整大小)。 – JeffryHouser 2010-12-22 13:59:44

1

您可以使用属性minWidth和maxWidth。 minWidth指定按钮应具有的最小宽度。和maxWidth来指定按钮可以具有的最大宽度。