DClick

Eliminando “Work Around” (minHeight=0)


Por default, o tamanho de um Container no Flex sempre leva em consideração o tamanho dos seus componentes filhos. Mas o que fazer quando você quer que o seu container ocupe “100%” de altura, por exemplo, sem se importar com o tamanho dos seus componentes filhos?

Observe o exemplo abaixo:

image1.jpg
image2.jpg

No exemplo acima Scroll é gerado no Container Vermelho e não no azul. Isto significa que o tamanho do Container Azul não é 200 (100% do Container Vermelho), mas sim 1000 (tamanho do seu Container filho - Canvas). Você pode resolver este problema com o seguinte “Work Around”:

image4.jpg
image3.jpg

O problema desta solução é que ela se baseia em um Bug do Flex. Vai saber porque ao definir o “minHeight” para “0” o comportamento padrão do Flex, que seria se basear no tamanho dos componentes filhos, é ignorado?!! Pois bem, se isto é um Bug realmente quando ele for corrigido futuramente o “Work Around” já era. Mas existe outra solução para o problema.

No Framework de componentes do Flex o método “measure()” é o responsável por definir o tamanho padrão dos Containers com base nos filhos. A nova solução consiste em estender o Box para ignorar a chamada a este método.

image5.jpg

Como a sua implementação o método “measure()” não faz nada, o tamanho não se baseará mais no tamanho dos filhos, podendo se basear, portanto, no tamanho percentual que foi informado. Isto pode ser visto no exemplo abaixo que inclui o código fonte (botão direito -> View Source).


Embora esta ultima solução também pareça um pouco estranha para os menos experientes em OO, ela resolve o problema de uma forma mais “limpa” e não deve parar de funcionar no futuro porque não se baseia em um Bug do SDK. Em resumo, a solução consiste apenas em modificar o comportamento de uma classe filha através de herança.

Por Beck Novaes em 27/September/2007 | Comentar | Trackback


No Translations

Um comentário para “Eliminando “Work Around” (minHeight=0)”


muito bom!
ótimo exemplo de OO :D

tem algum issue do SDK para isso? se não tem vc poderia lançar a issue e postar la o WorkAround.

Adicionar comentário

(requerido)
(requerido, não será publicado)