سؤال

أنا جديد على استخدام MXML لبناء التطبيقات.

في الأساس ، أقوم ببناء قائمة من البلاط (6 منهم) باستخدام TileGroup. عندما يتم تهيئته على عرض الصورة ، يبدو رائعًا (3 في الصف الأول و 3 في الثانية).

ومع ذلك ، عندما أقوم بتغيير الاتجاه ، أريد إعادة رسم البلاط بناءً على العرض والارتفاع الجديد.

من Stack Overflow ، وجدت أنه يمكنني الاستماع إلى الحدث تغيير الحجم. لكنني لا أعرف كيف أحصل على 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