2016-01-19 3 views
0

J'ai pris le Vaadin Dashboard Demo et construire une autre application à partir de celui-ci. Les arborescences des composants des deux applications sont identiques, ainsi que les thèmes et leurs feuilles de style.Vaadin reconnaît différentes tailles de navigateur à partir d'applications différentes, mais l'appareil est le même

Si je redimensionne le navigateur de bureau j'obtenir le comportement réactif que je pense, mais quand je l'accès depuis un navigateur mobile (Chrome sur le Nexus 5) Je reçois des comportements différents: Custom app vs Dashboard

L'ajout de ces lignes au fin du procédé init() des deux UI s

public class MyAppUI extends UI { 
    ... 
    @Override 
    protected void init(VaadinRequest request) { 
     ... 
     final Page page = Page.getCurrent(); 
     System.out.println(page.getWebBrowser().getBrowserApplication()); 
     System.out.println("Resolution: " + page.getBrowserWindowWidth() + "x" + page.getBrowserWindowHeight()); 
    } 
} 

public class DashboardUI extends UI { 
    ... 
    @Override 
    protected void init(VaadinRequest request) { 
     ... 
     final Page page = Page.getCurrent(); 
     System.out.println(page.getWebBrowser().getBrowserApplication()); 
     System.out.println("Resolution: " + page.getBrowserWindowWidth() + "x" + page.getBrowserWindowHeight()); 
    } 
} 

je reçois pour mon application:

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MMB29S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36 
Resolution: 980x1394 

et pour le tableau de bord Vaadin:

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MMB29S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36 
Resolution: 360x512 

Depuis mon application fonctionne sur le navigateur de bureau redimensionnée Je suis sûr que cela fonctionnera si seulement il peut obtenir la même taille du navigateur du tableau de bord.

Cela n'a pas de sens pour moi, quelqu'un d'autre a ce problème? Si vous avez besoin d'informations supplémentaires, veuillez commenter et je modifierai la question.

+0

Il semble que la première capture d'écran est prise sur une version de bureau, et le second sur l'un mobile (notez l'icône à gauche effondré dans le hamburger) - donc plus d'une chose côté client . Pouvez-vous explorer l'arbre via un inspecteur de navigateur et dire quelles sont les différences? Vous devriez surtout regarder les choses qui affectent les requêtes de médias CSS – Raffaele

+1

s'il vous plaît vérifier, si votre copie là effectivement injecte ce code html correctement: https://github.com/vaadin/dashboard-demo/blob/b9749203291bc5e485ed59d40433e809547a036d/src/main/java/com /vaadin/demo/dashboard/DashboardSessionInitListener.java#L24-L27 – cfrick

+0

@cfrick était-ce! Si vous voulez poster la réponse, je l'accepterai. –

Répondre

2

Les navigateurs mobiles ont besoin d'un message d'avertissement cérémonial dans le méta en-tête viewport.

Voir https://github.com/vaadin/dashboard-demo/blob/b9749203291bc5e485ed59d40433e809547a036d/src/main/java/com/vaadin/demo/dashboard/DashboardSessionInitListener.java#L24-L27 pour savoir comment cela est fait dans le projet, vous avez mentionné comme base.

head.appendElement("meta") 
     .attr("name", "viewport") 
     .attr("content", 
       "width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"); 
+0

pour les références futures: Vous pouvez également utiliser cette annotation sur votre classe d'interface utilisateur: @Viewport ("user-scalable = no, initial-scale = 1.0") –