IntelliJ için Gluon eklentisi tarafından oluşturulan FXML ile çoklu görünüm projesi ile çalışıyorum.Gluon mobile TextArea yazılım klavyesi sorunu
Oluşturulan birincil ve ikincil görünümün yanında GluonApplication sınıfında gezinme için sağlanan kodun yanında bir görünüm (tarama görünümü) ekledim.
Taramayı ilk kez taramak için gezinirken, bir notta textarea'da yanıp söner ancak android aygıtımdaki yumuşak klavye gösterilmiyor. Başka bir görünüme gittiğimde klavye kısa bir süre kendini gösterir ve bir saniye sonra kaybolur. Ardından, tarama görünümüne geri döndüğümde, yumuşak klavye görünecektir. Ve son olarak, Android cihazımda arka tuşa basarak textarea'dan odaklamayı geri çektiğimde, textarea öğesine dokunarak odağı yeniden elde etmek mümkün değil.
Herhangi bir bilgi hoşgeldiniz, şerefe.
GluonApplication.java:
public class GluonApplication extends MobileApplication {
public static final String PRIMARY_VIEW = HOME_VIEW;
public static final String SECONDARY_VIEW = "Product View";
public static final String SCAN_VIEW = "Scan View";
public static final String MENU_LAYER = "Side Menu";
@Override
public void init() {
//Add views.
addViewFactory(PRIMARY_VIEW,() -> (View) new PicklistView().getView());
addViewFactory(SECONDARY_VIEW,() -> (View) new ProductView().getView());
addViewFactory(SCAN_VIEW,() -> (View) new ScanView().getView());
//Navigation side bar configuration.
NavigationDrawer drawer = new NavigationDrawer();
NavigationDrawer.Header header = new NavigationDrawer.Header("Gluon Mobile",
"Multi View Project",
new Avatar(21, new Image(GluonApplication.class.getResourceAsStream("/icon.png"))));
drawer.setHeader(header);
final Item primaryItem = new Item("Picklist", MaterialDesignIcon.HOME.graphic());
final Item secondaryItem = new Item("Product", MaterialDesignIcon.DASHBOARD.graphic());
final Item scanItem = new Item("Scan", MaterialDesignIcon.DASHBOARD.graphic());
drawer.getItems().addAll(primaryItem, secondaryItem, scanItem);
drawer.selectedItemProperty().addListener((obs, oldItem, newItem) -> {
hideLayer(MENU_LAYER);
if (newItem.equals(primaryItem)) {
switchView(PRIMARY_VIEW);
} else if (newItem.equals(secondaryItem)) {
switchView(SECONDARY_VIEW);
} else {
switchView(SCAN_VIEW);
}
});
addLayerFactory(MENU_LAYER,() -> new SidePopupView(drawer));
}
scan.fxml:
<?import com.gluonhq.charm.glisten.mvc.View?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>
<View fx:id="scan" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="350.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.essers.pxl2016.scan.views.ScanPresenter">
<center>
<VBox alignment="TOP_CENTER" BorderPane.alignment="CENTER">
<children>
<Label fx:id="label" text="scan output label">
<VBox.margin>
<Insets bottom="5.0" />
</VBox.margin></Label>
<TextArea fx:id="input" />
</children>
</VBox>
</center>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
</View>
ScanPresenter:
Bu bilinen bir sorundur, ama bunun sadece giderilmiştir görünüyorpublic class ScanPresenter {
@FXML
private View scan;
@FXML
private Label label;
@FXML
private TextArea input;
private String oldString;
public void initialize() {
scan.showingProperty().addListener((obs, oldValue, newValue) -> {
// Update app bar.
if (newValue) {
AppBar appBar = MobileApplication.getInstance().getAppBar();
appBar.setNavIcon(MaterialDesignIcon.MENU.button(e ->
MobileApplication.getInstance().showLayer(GluonApplication.MENU_LAYER)));
appBar.setTitleText("Scan");
appBar.getActionItems().add(MaterialDesignIcon.CLOSE.button(e ->
javafx.application.Platform.exit()));
}
});
input.textProperty().addListener((observable, oldValue, newValue) -> {
if (oldValue.equals(newValue)) {
return;
} else {
label.setText(newValue);
}
});
input.requestFocus();
}
}