Pergunta

Quero me livrar da cor de rolagem flexível típica em componentes baseados em lista e exibir meu próprio estilo de renderização de rolagem.

Definir o UserOLover para 'False' é não é uma opção, uma vez que desativar isso também tornará a lista. Meu renderizador personalizado conta com essa função.

Pode ser tão difícil? Não há como definir essa cor de rolagem para transparente? Existe alguma outra maneira de meu renderizador descobrir se um item é destacado?

Obrigado!

EDIT: Claro que eu poderia definir a cor da rolagem como 'branca' e definir o AlternatingRowColors para algo semelhante ao branco. Tipo de trapaça :)

Foi útil?

Solução 2

@invertedspear, obrigado pela sua dica.

Na verdade, funciona! Quero dizer, subclassem, sem editar o SDK, não tentei isso. Mas o que você pode fazer é criar uma subclasse para uma lista, datagrid etc (ou mesmo avançadaDataGrid) e adicionar a seguinte função:

override protected function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number, width:Number,
    height:Number, color:uint, itemRenderer:IListItemRenderer):void
{
    // get style -- is this the right place?
    var alpha:Number = this.getStyle("rollOverAlpha");
    if (isNaN(alpha))
        alpha = 1.0;

    // no need to draw if alpha 0
    if (alpha <= 0)
        return;

    // draw -- this has been copied from superclass, and the alpha parameter added to beginFill()
    var g:Graphics = Sprite(indicator).graphics;
    g.clear();
    g.beginFill(color, alpha);
    g.drawRect(0, 0, width, height);
    g.endFill();

    indicator.x = x;
    indicator.y = y;
}

Agora, se você adicionar uma declaração de estilo à aula, estará pronto para rolar:

[Style(name="rollOverAlpha", type="Number", inherit="no")]
public class DataGridExt extends DataGrid
{
    ...
}

Mudar isso no SDK seria, obviamente, uma escolha melhor, pois você só precisaria tocar em duas classes: ListBase e AdvancedListBase. Vou verificar se há uma questão da Adobe Jira sobre isso ..

Outras dicas

Ao definir a propriedade 'Autodrawbackground' como 'false' no ItemRender personalizado, você pode desativar as cores de fundo do mouse e selecionadas e defini -las no seu renderizador, se necessário.

Esta é apenas a opção da lista de faíscas. Os controles MX não têm isso.

Existe uma maneira de fazer isso, mas não é divertido. Você pode editar o próprio SDK (yay para código aberto). Você pode entrar lá, descobrir onde está definindo a cor de destaque e comece a adicionar código para produzir uma propriedade pública para o alfa do destaque. Eu apoiaria seu SDK primeiro, pois existe a possibilidade de estragar tudo.

Parece que o código de rolagem está na classe ListBase, então eu faria uma cópia ou uma extensão dessa classe e adicionaria o código para rolar o Alpha a isso. Então eu faria uma cópia da classe List que herda desta nova listbase.

Boa sorte, meu amigo, e se você tiver sucesso, compartilhe suas novas aulas com o mundo, pois tenho certeza de que os outros podem querer fazer a mesma coisa.

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