Gluon AppBar 保持在视图中
Gluon AppBar keep in the view
我正在尝试构建消息 window,应用栏位于顶部
此屏幕由顶部的 Gluon App Bar 和底部的 VBox 组成,其余元素显示在屏幕中。
问题是当我单击文本区域输入文本时,应用栏超出范围。
有什么方法可以让应用栏一直在最前面吗?
如果您在 Android 上部署您的应用程序,TextField
和 TextArea
控件包含一个内置的 check:当这些输入控件获得焦点时,如果需要将场景上移以防止软键盘隐藏控件。
这些平移会影响整个场景,因此其中的所有节点(View
、VBox
、TextField
、TextArea
、AppBar
、. ..), 也将被翻译。
因此,如果您想让 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将向下移动相同的量:
我正在尝试构建消息 window,应用栏位于顶部
此屏幕由顶部的 Gluon App Bar 和底部的 VBox 组成,其余元素显示在屏幕中。
问题是当我单击文本区域输入文本时,应用栏超出范围。
有什么方法可以让应用栏一直在最前面吗?
如果您在 Android 上部署您的应用程序,TextField
和 TextArea
控件包含一个内置的 check:当这些输入控件获得焦点时,如果需要将场景上移以防止软键盘隐藏控件。
这些平移会影响整个场景,因此其中的所有节点(View
、VBox
、TextField
、TextArea
、AppBar
、. ..), 也将被翻译。
因此,如果您想让 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将向下移动相同的量: