2016-12-23 1 views
1

aide Vaadin 7, je suis en train d'accomplir une mise en page similaire à d'autres questions posées ici, mais avec une différence majeure:Vaadin extension de mise en page

Je veux que ma mise en page de contenu pour remplir l'espace restant que s'il n'est pas assez contenu dans. Cela se traduira par une mise en page comme le suivantes:

without content

Je veux aussi la mise en page pour pouvoir effectuer les opérations suivantes:

Quand j'ajouter plus de contenu, assez pour remplir la zone de mise en page de contenu , et continuer à ajouter plus, le pied de page restera en place, la barre de défilement apparaît et le contenu ajouté après sera ajouté au-dessous du pied de page.

En plus de la première image, en ajoutant suffisamment de contenu devrait aboutir à la mise en page suivante:

enter image description here

Répondre

1

Je ne sais pas si je comprends bien votre question ou non, mais permet d'essayer mon code et voir si elle aide:

final VerticalLayout layout = new VerticalLayout(); 
    layout.setMargin(true); 
    layout.setSpacing(true); 
    layout.setStyleName("flow_visible"); 
    final HorizontalLayout navBarLayout = new HorizontalLayout(); 
    final VerticalLayout contentLayout = new VerticalLayout(); 
    final VerticalLayout spacingLayout = new VerticalLayout(); 
    final HorizontalLayout footerLayout = new HorizontalLayout(); 
    String dummyText = "TDummy text"; 
    navBarLayout.addComponent(new Label("Navigation bar")); 
    navBarLayout.setStyleName("navbar"); 
    navBarLayout.setWidth("100%"); 

    contentLayout.setSizeFull(); 
    contentLayout.setSpacing(true); 
    Button addButton = new Button("Add more content", 
      (Button.ClickListener) clickEvent -> { 
       contentLayout.addComponent(new Label(dummyText), 
         contentLayout.getComponentCount() - 2); 
      }); 
    contentLayout.addComponent(addButton); 
    for (int i = 0; i < 6; i++) { 
     contentLayout.addComponent(new Label(dummyText)); 
    } 
    spacingLayout.setSizeFull(); 
    contentLayout.addComponent(spacingLayout); 
    contentLayout.setExpandRatio(spacingLayout, 1f); 

    footerLayout.addComponent(new Label("Footer")); 
    footerLayout.setStyleName("footer"); 
    footerLayout.setWidth("100%"); 
    contentLayout.addComponent(footerLayout); 

    layout.addComponent(navBarLayout); 
    layout.addComponent(contentLayout); 
    layout.setSizeFull(); 
    layout.setExpandRatio(contentLayout, 1f); 

Comment fonctionne ce code: http://i.imgur.com/1HH1wm7.gif

+0

Salut qtdzz, et merci pour l'affichage d'une soluti très valide sur mon problème! Malheureusement, j'ai déjà réalisé la mise en page que vous avez présentée, mais ce que je voulais était la même chose avec un ajout minuscule: Avant que la mise en page du contenu soit agrandie pour remplir l'écran comme dans votre exemple, j'aimerais que le pied de page et pas immédiatement en dessous de la zone de contenu. – Syncretic

+0

Salut, @ Syncretic J'ai modifié le code pour répondre à vos besoins. J'ai ajouté un nouveau spacingLayout après le contenu et déplacé le footerLayout dans contentLayout. Je ne suis pas sûr que ce soit une bonne solution ou non, mais au moins cela fonctionne pour votre cas. – qtdzz

+0

Merci beaucoup, c'est exactement ce que j'ai essayé de réaliser! J'ai nettoyé mon post original pour essayer de clarifier et laisser les autres bénéficier de votre solution. – Syncretic