Frage

Ich nutze MXML zum Erstellen von Apps.

Grundsätzlich baue ich eine Liste von Kacheln (6 davon) mit Tilegroup. Wenn es in der Porträtansicht initialisiert, sieht es gut aus (3 in der ersten Reihe und 3 in der zweiten).

Wenn ich jedoch die Orientierung ändere, möchte ich, dass die Fliesen auf der Grundlage der neuen Breite und Höhe neu zeichnen.

Aus dem Stack Overflow stellte ich fest, dass ich die Größe der Größe anhören kann, die Ereignisse anhören kann. Aber ich weiß nicht, wie ich die TileGroup zum erneuten Zeichnen bringen kann.

Anfangs dachte ich, ich könnte Autolayout für TileGroup verwenden. Aber das hat den Trick nicht getan. Es fällt mir schwer, nach einer Lösung zu suchen (vielleicht habe ich nicht die richtigen Schlüsselwörter verwendet).

Gibt es eine Funktion, die ich aufrufen kann, um neu zu zeichnen?

Oder gibt es eine andere Möglichkeit, meine Fliese auf die Orientierung zu reagieren?

Hier ist mein 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>   

Bitte Ratschläge! Vielen Dank!

Justin

War es hilfreich?

Lösung

Neuleuchter basierend auf der Größenänderung findet automatisch statt. Wenn Sie jedoch keinen Container (Ihr TileGroup in diesem Fall) mit einigen spezifischen Größenregeln wird das Standard -Größenverhalten angewendet, nämlich den Inhalt entsprechen. Offensichtlich ändert sich dieser Inhalt nicht, egal ob Sie im Porträt oder im Landschaftszustand sind, also passiert nichts.

Ich bin mir nicht ganz sicher, was Sie versuchen zu tun, aber einstellen width="100%" height="100%" wird das dehnen TileGroup über den gesamten Bildschirm. Dh seine Größe wird basierend auf der Größe seines übergeordneten Containers anstelle seines Inhalts berechnet. Somit ändert sich die Anzahl der Spalten/Zeilen, wenn sich der Status ändert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top