2010-11-30 14 views
2

J'ai la situation suivante, où j'ai une Vbox externe qui est fixée à une largeur fixe, et à l'intérieur il y a un en-tête fait à partir d'un HBox et d'une zone de contenu (Canvas) qui est beaucoup plus large que la VBox qui l'entoure (et nécessite donc des barres de défilement sur la VBox externe pour tout voir). Je souhaite définir la largeur de l'en-tête pour remplir toute la largeur du conteneur externe, mais uniquement la partie visible, et rester fixe de sorte que lorsque je défile pour afficher le contenu, l'en-tête ne bouge pas .Flex Layout: la largeur de can peut être 100% de la zone * visible * d'un conteneur plus grand

Quelqu'un peut-il me dire comment je peux acomplish, visitez notre

______________________________ 
    | _________________________ |  
    | |_________________________| | 
    |      |  
    | ____________________________|_ _ _ _ _ 
    | |       |   | 
    | |       |   | 
    | |       |   | 
    | |       |   | 
    | --------------------------------------- 
    |        | 
    |______________________________| 
    |<|__________________________|>| 

Répondre

0

Si vous avez besoin de l'en-tête fixe au-dessus VBox, tout simplement pas l'ajouter dans. Placez au-dessus de (créer wrapper Toile pour VBox et en-tête). Au lieu de l'en-tête, placez UIComponent avec la hauteur correspondante pour remplacer l'en-tête.

BTW, +1 pour la patience avec :) pseudo-graphique

+0

Merci tous les deux pour les réponses que vous, heureux que les graphiques ont aidé :) Je suis en train ces suggestions à maintenant, mais une chose que j'oublié de mentionner est que je n'ai pas le contrôle de la boîte extérieure, seulement l'intérieur. La boîte externe est un espace réservé à l'échelle du système pour le contenu de la page principale de l'application. Je ne sais pas si ça change quelque chose. En tout cas, je vais voir comment je vais, merci! – Richard

1

Créer une VBox avec 1) un en-tête en haut, et 2) un VBox sous l'en-tête avec votre toile à l'intérieur que. L'autre réponse fonctionnera également. Et ces graphiques aident beaucoup, bonhomme.

1

Use Group as a wrapper:

<Child1/> 

<s:Group width="100%"> 
    <Child2 left="0" right="0'/> 
</s:Group> 

<Child3/> 
+0

Merci, mais je pense que c'est Flex 4 et je suis sur Flex 3 (ma faute, une autre chose que je n'ai pas mentionné dans mon post précédent). – Richard

+0

Une solution que j'ai trouvée plus tôt est, lors de l'initialisation, obtenir la largeur du conteneur principal et définir la largeur de l'en-tête à cela. Cela semble bien, jusqu'à ce que vous commenciez à défiler bien sûr. – Richard

+0

Ooh, j'ai une solution encore meilleure maintenant; Je définis la largeur de l'en-tête à la largeur du conteneur principal. Ensuite, je capture l'événement de défilement, et le redimensionne à la largeur du conteneur + la position de défilement, de sorte que le défilement vers l'arrière et vers l'avant redimensionne dynamiquement l'en-tête. – Richard