2016-03-25 12 views
0

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üyor
public 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(); 
    } 
} 

cevap