Pergunta

Eu é novo no uso do MXML para criar aplicativos.

Basicamente, estou construindo uma lista de ladrilhos (6 deles) usando o TileGroup. Quando inicializa na visão de retrato, parece ótimo (3 na primeira linha e 3 no segundo).

No entanto, quando altero a orientação, quero que os ladrilhos sejam redesenhados com base na nova largura e altura.

Do Stack Overflow, descobri que posso ouvir para redimensionar o evento. Mas, não sei como fazer o TileGroup Redraw.

Inicialmente, pensei que poderia usar o AUTOLAYOUT para o TileGroup. Mas isso não fez o truque. Estou tendo dificuldade em procurar uma solução (talvez eu não estivesse usando as palavras -chave certas).

Existe uma função que eu possa chamar de redesenho?

Ou há outra maneira de tornar meu ladrilho responsivo à orientação?

Aqui está o meu código:

<components:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" xmlns:components="spark.components.*" 
             title="Forex Calculator">
<components:states>
    <s:State name="portrait"/>
    <s:State name="landscape"/>
</components:states>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<s:TileGroup id="mainGroup" includeIn="portrait, landscape" autoLayout="true">
    <s:Rect width="75" height="75">
        <s:fill>
            <s:SolidColor color="0xd54f4f"/>
        </s:fill>
    </s:Rect>
    <s:Rect width="75" height="75">
        <s:fill>
            <s:SolidColor color="0x2f977d"/>
        </s:fill>
    </s:Rect>
    <s:Rect width="75" height="75">
        <s:fill>
            <s:SolidColor color="0xfffca2"/>
        </s:fill>
    </s:Rect>
    <s:Rect width="75" height="75">
        <s:fill>
            <s:SolidColor color="0xfffca2"/>
        </s:fill>
    </s:Rect>
    <s:Rect width="75" height="75">
        <s:fill>
            <s:SolidColor color="0xfffca2"/>
        </s:fill>
    </s:Rect>
</s:TileGroup>   

Conselho por favor! Obrigado!

Justin

Foi útil?

Solução

Re-agregado com base no redimensionamento acontece automaticamente. No entanto, se você não fornecer um contêiner (seu TileGroup neste caso) com algumas regras de dimensionamento específicas, ele aplicará seu comportamento de dimensionamento padrão, que é ajustar seu conteúdo. Obviamente, esse conteúdo não muda se você está no retrato ou no estado da paisagem, então nada acontece.

Não sei exatamente o que você está tentando fazer, mas definindo width="100%" height="100%" vai esticar o TileGroup em toda a tela. Ou seja, seu tamanho será calculado com base no tamanho do contêiner pai em vez de seu conteúdo. Assim, o número de colunas/linhas mudará quando o estado mudar.

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