Gluon AppBar 保持在视图中

Gluon AppBar keep in the view

我正在尝试构建消息 window,应用栏位于顶部

此屏幕由顶部的 Gluon App Bar 和底部的 VBox 组成,其余元素显示在屏幕中。

问题是当我单击文本区域输入文本时,应用栏超出范围。

有什么方法可以让应用栏一直在最前面吗?

如果您在 Android 上部署您的应用程序,TextFieldTextArea 控件包含一个内置的 check:当这些输入控件获得焦点时,如果需要将场景上移以防止软键盘隐藏控件。

这些平移会影响整个场景,因此其中的所有节点(ViewVBoxTextFieldTextAreaAppBar、. ..), 也将被翻译。

因此,如果您想让 AppBar 节点始终可见并位于相同的顶部位置,可能的解决方法是在发生翻译时抵消该翻译。

如果你有一个 BasicView 例如(Gluon IDE 插件 -> 单视图项目),在视图底部有一个 TextField 控件:

public BasicView() {

    Label label = new Label("Hello JavaFX World!");

    Button button = new Button("Change the World!");
    button.setGraphic(new Icon(MaterialDesignIcon.LANGUAGE));
    button.setOnAction(e -> label.setText("Hello JavaFX Universe!"));

    VBox controls = new VBox(15.0, label, button, new TextField());
    controls.setAlignment(Pos.BOTTOM_CENTER);
    controls.setPadding(new Insets(20));

    setCenter(controls);
}

你可以这样修改:

public BasicView() {

    ...

    setOnShown(e -> {
        MobileApplication.getInstance().getAppBar().translateYProperty()
                .bind(controls.getScene().getRoot().translateYProperty().multiply(-1));
    });
}

确保添加此绑定时视图已添加到场景中(以防止 NPE)。

现在当textfield获得焦点时,整个场景将向上移动,appBar将向下移动相同的量: