Pergunta

Estou alimentando a etiqueta ao meu LinkButton diretamente de uma corda que recebo de uma API do Google que coloca HTML para formatar o rótulo.

Eu quero estender linkbutton para permitir isso. Eu escrevi uma classe-me a permitir que o texto html para o rótulo e esse aspecto ele funciona, mas agora o pano de fundo que aparece quando você passa é muito grande. Tentei medida override () para corrigir isso, mas eu não tinha idéia de como. Aqui é a classe que eu escrevi:

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;
            }
        }



    }
}
Foi útil?

Solução

a função measure () é a chave.

Supondo que você estiver usando uma versão compatibilidade Flex> = 3.0, a linha chave está em Button.measure ():

var lineMetrics:TextLineMetrics = measureText(label);

Você precisa mudar isso para algo como:

var lineMetrics:TextLineMetrics = _isHTML ? measureHTMLText(label) : measureText(label);

Você provavelmente terá que copiar a função medida de botão em sua classe e fazer essa alteração.

Se você fizer isso, você terá mais likley para importar o namespace interno, como este:

import mx.core.mx_internal;

use namespace mx_internal;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top