2016-04-07 10 views
1

In einigen Ansichten zeige ich den Namen eines ausgewählten Elements als Titel der . Wenn der Name jedoch sehr lang ist, wird VBox mit der Titelbezeichnung auf die PrefWidth des Etiketts erweitert. Sie können das Ergebnis auf dem ersten Bild sehen. Als Workaround füge ich der appBar eine styleClass hinzu, die die maxWidth für das Label festlegt.Titel in AppBar wird zu groß

view.setOnShown(e -> getAppBar().getStyleClass().add("myStyleClass")); 

Obwohl es funktioniert, ist es schlechte Praxis die maxWidth so einzustellen, weil es nicht an unterschiedliche Bildschirmgrößen angepasst werden kann.

Wie kann ich das Ergebnis auf dem zweiten Bild erzielen und die Breite des Titels an verschiedene Bildschirmgrößen anpassen?

enter image description here

Antwort

1

A quick and dirty Abhilfe der maximale Breite des Etiketts auf der Szene Dimensionen basierend einstellen könnte, auf einer View-Unterklasse:

@Override 
protected void updateAppBar(AppBar appBar) { 
    appBar.setTitleText("Very very very long title"); 
    ((Label) appBar.getTitle()).maxWidthProperty().bind(appBar.getScene().widthProperty().subtract(100));  
} 

, wo die Menge an subtrahieren hängt die Anzahl der Schaltflächen (Navigationssymbol, Aktionssymbole oder Menüschaltfläche), die Sie in dieser Ansicht haben.

+0

Ja, darüber habe ich auch nachgedacht. Sicherlich eine bessere Lösung, obwohl ich mir nicht sicher bin, ob mir die Idee, feste Werte zu verwenden, gefällt, da Sie immer noch die Größe Ihrer zusätzlichen Elemente kennen müssen. – jns

+1

Dies sollte mit der [release] (http://gluonhq.com/gluon-mobile-2-2-0-released/) der neuen Charm 2.2.0 Version behoben werden. Kannst du überprüfen? –

+0

Ja, es funktioniert. Sehr schön – jns