2017-03-19 1 views
0

J'ai une vue des paramètres avec un AppBar de style et lorsque j'ouvre un dialogue plein écran à partir de cette vue, le style AppBar suit l'échantillon global spécifié. ALORS, lorsque je ferme la boîte de dialogue, l'Affichage des paramètres AppBar conserve le style de boîte de dialogue (il doit avoir un fond blanc, mais c'est le vert qui est l'échantillon spécifié pour l'application).Personnalisation de l'appli Gluon Mobile Dialog

plus de précisions:

La vue est une page pour Paramètres, puis lorsque vous cliquez sur chaque paramètre une boîte de dialogue apparaît avec le jeu de contenu à StackPanes qui contiennent des informations pour ce paramètre spécifique.

J'ai essayé d'ajouter une méthode qui stylise la barre d'accès à la fermeture de dialogue, se cacher, et gestionnaires d'événements cachés:

public void initView(SettingView viewType) { 

    View pane = null; 

    try { 
     switch (viewType) { 
      case PASSWORD_CHANGE: 
       pane = getPasswordPane(); 
       break; 
      case PROFILE_CHANGE: 
       pane = getProfilePane(); 
       break; 
      case BANK_CHANGE: 
       pane = getBankPane(); 
       break; 
      case NOTIFICATION_CHANGE: 
       pane = getNotificationPane(); 
       break; 
     } 
    } catch (IOException e) { 
     System.out.println("IOException: " + e); 
    } 

    //this.settingsContainer = new Dialog(true); 
    this.settingsContainer.setContent(pane); 

    MobileApplication.getInstance().removeLayerFactory("$$$DropdownButtonSkin$$$"); 

    Platform.runLater(new Runnable() { 
     @Override 
     public void run() { //None of these change the appbar styling 
      settingsContainer.setOnShowing(e -> { setAppBar("Settings");}); 
      settingsContainer.setOnShown(e -> { setAppBar("Settings");}); 
      settingsContainer.setOnHiding(e -> { setAppBar("Settings");}); 
      settingsContainer.setOnHidden(e -> { setAppBar("Settings");}); 

      //When closing the appbar the color remains to the swatch instead of the customized background 
      settingsContainer.setOnCloseRequest(e -> { setAppBar("Settings");}); 
      settingsContainer.showAndWait(); 
     } 
    }); 

} 

public AppBar setAppBar(String name) { 
    Button menu = MaterialDesignIcon.MENU.button(); 
    menu.setStyle("-fx-text-fill:darkgreen;"); 
    menu.setOnMouseClicked(e -> { 
     MobileApplication.getInstance().showLayer(Appstar.MENU_LAYER); 
    }); 

    AppBar appBar = MobileApplication.getInstance().getAppBar(); 
    appBar.clear(); 
    appBar.setNavIcon(menu); 
    appBar.setTitleText(name); 
    appBar.setVisible(true); 
    appBar.setBackground(new Background(new BackgroundFill(Color.WHITE, new CornerRadii(0), new Insets(0, 0, 0, 0)))); 
    return appBar; 
} 
+0

Vous voulez une barre d'accès personnalisée (une couleur différente) dans votre plein écran en mode Dialogue et vous voyez toujours l'AppBar dont la couleur d'échantillon sur le dialogue, non? – ItachiUchiha

+0

J'ai une vue des paramètres avec une barre d'application de style pour avoir un fond blanc. L'échantillon est vert. Lorsque j'ouvre le dialogue, la barre d'application de la boîte de dialogue est la couleur verte. Lorsque je ferme la barre d'applications, l'appbar de la vue Paramètres devient également verte. Ce n'est que lorsque je change de vue dans le menu Navigation que l'arrière-plan des paramètres redevient blanc. –

Répondre

1

Considérant que vous voulez la même couleur app-bar sur toutes les vues (c.-à-blanc toutes les vues), la façon la plus simple de résoudre ceci est d'utiliser CSS.

Vous pouvez définir la couleur de l'AppBar sur une boîte de dialogue en plein écran en utilisant la classe de style personnalisée pour AppBar sur une boîte de dialogue en plein écran, dialog-fullscreen avec la classe de style de base app-bar. Par conséquent, vous pouvez utiliser quelque chose comme ceci:

.app-bar.dialog-fullscreen { 
    -fx-background-color: green; // OR -primary-swatch-500; 
} 

Pour définir la couleur globale app-bar à blanc, vous pouvez simplement utiliser:

.app-bar { 
    -fx-background-color: white; 
}