2010-11-02 4 views
3

Ma disposition existante est une pile de deux couches div-g: dans un LayoutPanel. Le div supérieur devrait être aussi grand qu'il doit être pour contenir son contenu. La div du bas devrait prendre le reste de l'espace sur l'écran, sans provoquer l'apparition des barres de défilement.Mise en page GWT: "prendre le reste de l'espace."

Le contenu de la div supérieure peut changer, de sorte que la taille de la div supérieure peut changer.

Ma solution actuelle est un rappel qui est déclenché chaque fois que le contenu de la div supérieure change. Le LayoutPanel contenant peut alors recalculer la taille de la div supérieure et définir explicitement les attributs top et bottom de la deuxième couche pour occuper le reste de l'espace. Y a-t-il un meilleur moyen? Quelque chose comme,

<g:LayoutPanel> 
    <g:layer top="0px" height="whatever you need, baby"> 
     <c:SomeWidget/> 
    </g:layer> 
    <g:layer top="the bottom of the first layer" bottom="0px"> 
     <c:Anotherwidget/> 
    </g:layer> 
</g:LayoutPanel> 
+0

Si vous ne voulez pas du tout de barres de défilement, alors il y a une solution facile: Utilisez un FlowPanel avec 'overflow: hidden'. Mais je suppose que vous voulez qu'une barre de défilement apparaisse, quand le panneau du bas déborde? J'aimerais voir une solution pour cela aussi (je veux dire celle qui fonctionne aussi en mode strict). Pas sûr, si c'est possible avec CSS 2.1 du tout (?) –

+0

Oui, j'ai besoin de la taille d'un ScrollPanel dans la deuxième couche. Arrgh. –

Répondre

0

La réponse semble être qu'il n'y a pas de meilleure façon. Le recalcul manuel n'est pas si mal quand on s'y habitue!

1

Qu'en est-il de l'utilisation DockLayoutPanel?

<g:DockLayoutPanel unit='PX'> 
    <north size="10" ui:field='northWidget'> 
    <c:SomeWidget/> 
    </north> 
    <center> 
    <c:Anotherwidget/> 
    </center> 
</g:DockLayoutPanel> 

Alors le center prendra le reste de l'espace. Si vous souhaitez redimensionner le haut, appelez setWidgetSize(northWidget, newSize); et le widget center sera recalculé.

+0

Mais je dois encore calculer la taille du 'northWidget', n'est-ce pas? Je suis à la recherche d'une solution qui ira automatiquement quand northWidget changera de taille. –

0

Je pense que HeaderPanel est le widget standard pour ce faire. Peut-être qu'il a été ajouté après la question a été posée. Nous l'avons manqué aussi et avons eu notre propre version pendant un moment.

Questions connexes