Вопрос

Я новичок в использовании MXML для создания приложений.

По сути, я строю список плиток (6 из них), используя Tilegroup. Когда он инициализируется на портретном обзоре, он выглядит великолепно (3 в первом ряду и 3 на втором).

Однако, когда я меняю ориентацию, я хочу, чтобы плитки перерисованы на основе новой ширины и высоты.

Из переполнения стека я обнаружил, что могу слушать событие Resize. Но я не знаю, как получить Tilegroup, чтобы перекрасить.

Первоначально я думал, что смогу использовать Autolayout для TileGroup. Но это не помогло. Мне трудно найти решение (возможно, я не использовал правильные ключевые слова).

Есть ли функция, которую я могу позвонить, чтобы перекрасить?

Или есть другой способ сделать мою плитку отзывчивой на ориентацию?

Вот мой код:

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

Пожалуйста посоветуй! Спасибо!

Джастин

Это было полезно?

Решение

Повторная прокладка на основе изменения размера происходит автоматически. Однако, если вы не предоставите контейнер (ваш TileGroup В этом случае) с некоторыми конкретными правилами размера он будет применять поведение по размеру по умолчанию, которое состоит в том, чтобы соответствовать его контенту. Очевидно, что контент не меняется, если вы находитесь в портретном или ландшафтном состоянии, так что ничего не происходит.

Я не совсем уверен, что вы пытаетесь сделать, но настройка width="100%" height="100%" растянет TileGroup На всем экране. Т.е. его размер будет рассчитан на основе размера его родительского контейнера вместо его содержания. Таким образом, количество столбцов/строк изменится при изменении состояния.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top