Question

Je suis nouveau dans l'utilisation de MXML pour créer des applications.

Fondamentalement, je construis une liste de tuiles (6 d'entre eux) à l'aide de TileGroup. Lorsqu'il initialise sur la vue de portraits, il a fière allure (3 sur la première ligne et 3 sur le second).

Cependant, lorsque je change l'orientation, je veux que les carreaux redessinent en fonction de la nouvelle largeur et de la nouvelle hauteur.

De Stack Overflow, j'ai trouvé que je pouvais écouter l'événement de redimensionnement. Mais, je ne sais pas comment faire redessiner TileGroup.

Au départ, je pensais pouvoir utiliser AutoLayout pour TileGroup. Mais cela n'a pas fait l'affaire. J'ai du mal à chercher une solution (peut-être que je n'utilisais pas les bons mots clés).

Y a-t-il une fonction que je peux appeler pour redessiner?

Ou y a-t-il un autre moyen de rendre ma tuile réactive à l'orientation?

Voici mon code:

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

Veuillez conseiller! Merci!

Justin

Était-ce utile?

La solution

Le rediffusion basé sur le redimensionnement se produit automatiquement. Cependant, si vous ne fournissez pas de conteneur (votre TileGroup Dans ce cas) avec certaines règles de dimensionnement spécifiques, il appliquera son comportement de dimensionnement par défaut, qui consiste à s'adapter à son contenu. De toute évidence, ce contenu ne change pas, que vous soyez dans un état de portrait ou de paysage, donc rien ne se passe.

Je ne sais pas exactement ce que vous essayez de faire, mais en définissant width="100%" height="100%" étirera le TileGroup sur tout l'écran. C'est-à-dire que sa taille sera calculée en fonction de la taille de son conteneur parent au lieu de son contenu. Ainsi, le nombre de colonnes / lignes changera lorsque l'état changera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top