我直接从我从Google API收到的字符串中将标签提供给我的LinkButton,该API将html格式化为标签。
我想扩展linkbutton以允许这个。我自己写了一个类,允许标签的html文本和它的方面工作,但现在你悬停时出现的背景太大了。我试图覆盖measure()来解决这个问题,但我不知道如何。这是我写的课程:
package com.kranichs.components
{
import mx.controls.LinkButton;
public class HTMLLinkButton extends LinkButton
{
protected var _isHTML:Boolean;
public function HTMLLinkButton()
{
super();
}
[Bindable]
public function set isHTML(value:Boolean):void
{
_isHTML = value;
}
public function get isHTML():Boolean
{
return _isHTML;
}
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(_isHTML)
{
textField.htmlText = label;
}
}
}
}
答案 0 :(得分:0)
measure()函数是关键。
假设您使用的是flex兼容版本> = 3.0,则关键行位于Button.measure()中:
var lineMetrics:TextLineMetrics = measureText(label);
您需要将其更改为:
var lineMetrics:TextLineMetrics = _isHTML ? measureHTMLText(label) : measureText(label);
您可能需要将度量功能从按钮复制到您的班级并进行此更改。
如果你这样做,你最需要导入内部命名空间,如下所示:
import mx.core.mx_internal;
use namespace mx_internal;