Gluon mobile Gluon Mobile对话框Appbar自定义

Gluon mobile Gluon Mobile对话框Appbar自定义,gluon-mobile,Gluon Mobile,我有一个带有样式化AppBar的设置视图,当我从该视图打开全屏对话框时,AppBar样式遵循指定的全局样例。 然后,当我关闭对话框时,“设置”视图应用程序栏保留对话框样式。它应该有白色背景,但它是绿色的,这是为应用程序指定的样例 进一步澄清: 该视图是一个设置页面,当您单击每个设置时,会弹出一个对话框,其中的内容设置为堆栈窗格,其中包含该特定设置的信息 我尝试添加一个方法,用于在对话框关闭、隐藏和隐藏事件处理程序上设置AppBar的样式: public void initView(Setting

我有一个带有样式化AppBar的设置视图,当我从该视图打开全屏对话框时,AppBar样式遵循指定的全局样例。 然后,当我关闭对话框时,“设置”视图应用程序栏保留对话框样式。它应该有白色背景,但它是绿色的,这是为应用程序指定的样例

进一步澄清:

该视图是一个设置页面,当您单击每个设置时,会弹出一个对话框,其中的内容设置为堆栈窗格,其中包含该特定设置的信息

我尝试添加一个方法,用于在对话框关闭、隐藏和隐藏事件处理程序上设置AppBar的样式:

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;
}

考虑到您希望所有视图上的应用程序栏颜色相同,即所有视图中的白色,解决此问题的最简单方法是使用CSS

您可以通过使用全屏对话框上AppBar的自定义样式类(即dialog fullscreen和基本样式类app bar)在全屏对话框上设置AppBar的颜色。因此,您可以使用如下内容:

.app-bar.dialog-fullscreen {
    -fx-background-color: green; // OR -primary-swatch-500;
}
要将整个应用程序栏颜色设置为白色,只需使用:

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

您希望在全屏对话框视图中使用不同颜色的自定义AppBara,但仍然可以看到对话框上的AppBar样例颜色,对吗?我有一个设置视图,其AppBar样式为白色背景。样本是绿色的。当我打开对话框时,对话框appbar是绿色的。当我关闭appbar时,“设置”视图的appbar也会变为绿色。只有通过导航菜单切换视图时,设置背景才会再次变为白色。