2010-03-16 3 views
0

FYI, je suis un débutant Flex. J'essaie de créer une application Flex qui peut rétrécir automatiquement en fonction de la taille des composants qu'elle contient, afin qu'un utilisateur puisse la réduire à une vue minimale pour voir plus de la page HTML dans laquelle elle est intégrée.Flex3: Comment redimensionner un conteneur en fonction de la taille de son contenu?

Je sais comment changer la taille de l'ensemble de l'application en utilisant ExternalInterface, mais j'ai du mal à comprendre automatiquement à quel point la taille a changé quand quelque chose est caché ou affiché.

Par exemple:

Disons que j'ai la disposition flex suivante:

<?xml version="1.0" encoding="utf-8"?> 
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> 
     <mx:VBox width="100%" paddingTop="0" paddingBottom="0" 
       paddingLeft="0" paddingRight="0" horizontalGap="0" id="mainVBox"> 
      <mx:HBox>    
       <mx:Button label="hide-show b" click="{showHideB()}"/> 
      </mx:HBox> 

      <mx:Text id="a" text="a" fontSize="42" textAlign="center"/> 
      <mx:Text id="b" text="b" fontSize="42" textAlign="center"/> 

    </mx:VBox> 
</mx:Application> 

Comment puis-je cacher l'un des champs de texte et la cause du VBox à rétrécir? Je le mets actuellement à visible = false, mais cela ne semble pas affecter la VBox parente.

Une fois la VBox rétrécie, comment puis-je détecter que l'application n'a plus besoin de beaucoup d'espace, puis déterminer combien d'espace il lui faut?

J'ai essayé d'utiliser ResizeEvent, mais je n'ai pas réussi à les faire fonctionner, mais je pourrais faire quelque chose de mal.

Merci!

Répondre

1

Flex n'utilise pas le même type de style "d'affichage" que CSS utilise avec le DOM HTML. Les équivalents Flex de "visibility" et "display" sont, respectivement, "visible" et "includeInLayout".

Donc, si vous voulez supprimer un élément de la vue et du flux de documents, faire quelque chose comme ceci:

.aStyle { 
    visible: false; 
    includeInLayout: false; 
} 

Si la définition de cette ActionScript, vous pouvez l'écrire dans une ligne:

// myVBox is a VBox 
    myVBox.visible = myVBox.includeInLayout = false; 

Maintenant, en ce qui concerne le fait de permettre à un conteneur de «rétrécir pour s'adapter», c'est vraiment facile. Ne mettez pas de largeur ou de hauteur dessus. Votre VBox ci-dessus a une largeur = "100%", ce qui signifie qu'elle prendra toujours autant de place que son conteneur parent et que les frères et sœurs lui donnent.

Questions connexes