2016-03-25 27 views
0

IntelliJ用のGluonプラグインで生成されたFXMLを使用したマルチビュープロジェクトで作業しています。Gluon mobile TextAreaソフトキーボードの問題

生成されたプライマリビューとセカンダリビューの横にビュー(スキャンビュー)を追加し、GluonApplicationクラスのナビゲーション用のコードを提供しました。

初めてスキャンビューに移動すると、キャラクタがテキストエリアで点滅しますが、Androidデバイスのソフトキーボードは表示されません。 別のビューに移動すると、キーボードが一時的に表示され、1秒後に消えます。 次に、スキャンビューに戻ると、ソフトキーボードが表示されます。 最後に、アンドロイドデバイスの戻るボタンを使ってテキストエリアからフォーカスを引っ込めると、テキストエリアをタップしてフォーカスを取り戻すことはできません。

歓迎、歓声。

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:

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

答えて

1

これは既知の問題だったが、それだけのために固定されたようですテキストフィールド:https://bitbucket.org/javafxports/8u-dev-rt/commits/ef07043d5739ace78568f20d7bc89ba0cf60c4e0

私は、同様のTextAreaのために、この問題を修正するプル要求を作成しました:https://bitbucket.org/javafxports/8u-dev-rt/pull-requests/5/fix-jfxport-41/diff

JavaFXPortsの新しいリリース(バージョン8.60.7)が来週のどこかで作成することが予定されています。 これらの修正は、released on March 31, 2016のJavaFXPorts 8.60.7に含まれています。

関連する問題