2017-10-05 103 views
1

我正在嘗試爲調查頁面實施Gluon Mobile切換按鈕,並且在測試時,按鈕會稍微向左跳轉,當我單擊它時。我不想讓它跳起來。你可以在這裏看到:Gluon Mobile撥動按鈕跳躍

Toggle button jumping

相關的代碼是在這裏:

StackPane getToggler() { 

    ToggleButton toggleButton = new ToggleButton("Yes"); 
    ToggleButtonGroup toggleButtonGroup = new ToggleButtonGroup(); 
    toggleButtonGroup.setSelectionType(SelectionMode.SINGLE); 
    toggleButtonGroup.setPadding(new Insets(10)); 

    toggleButton = new ToggleButton("Yes"); 
    toggleButton.setStyle("-fx-text-fill:steelblue;"); 
    toggleButton.setUserData("1"); 
    toggleButton.setSelected(false); 
    toggleButton.selectedProperty().addListener((obv, ov, nv) -> { 
     if (nv.booleanValue()) { 
      toggleButtonGroup.setUserData("1"); 
     } 
    }); 

    toggleButtonGroup.getToggles().add(toggleButton); 

    toggleButton = new ToggleButton("No"); 
    toggleButton.setStyle("-fx-text-fill:steelblue;"); 
    toggleButton.setSelected(true); 
    toggleButton.setUserData("0"); 
    toggleButton.setSelected(false); 
    toggleButton.selectedProperty().addListener((obv, ov, nv) -> { 
     if (nv.booleanValue()) { 
      toggleButtonGroup.setUserData("0"); 
     } 
    }); 
    toggleButtonGroup.getToggles().add(toggleButton); 
    togglers.add(toggleButtonGroup); 

    StackPane wrapper = new StackPane(); 
    wrapper.setAlignment(Pos.CENTER); 
    wrapper.getChildren().add(toggleButtonGroup); 

    return wrapper; 
} 

這裏就是我得到的togglers和他們的關係到標籤的左邊:

for (int i = 0; i < this.questions.length; i++) { 

     HBox row = new HBox(); 
     row.setSpacing(5); 
     row.setAlignment(Pos.CENTER_LEFT); 

     Label label = new Label(this.questions[i]); 
     label.setWrapText(true); 
     label.setPrefWidth(200); 
     label.setTextAlignment(TextAlignment.LEFT); 
     label.setFont(new Font("System", 14)); 

     StackPane wrapper = this.getToggler(); 

     Region region = new Region(); 
     HBox.setHgrow(region, Priority.ALWAYS); 
     HBox.setHgrow(label, Priority.NEVER); 

     row.getChildren().addAll(label,region,wrapper); 
     box.getChildren().add(row); 
     box.getChildren().add(new Separator()); 

    } 

回答

2

經過一些調試後,我意識到切換按鈕的最小寬度值比它們的寬度寬。

這意味着用戶選擇一個切換後,將應用最小寬度,然後使用所需的最小寬度調整控件大小,從而縮小該區域的大小。

甲快速修復(直到此得到固定在控制)可以是設置你切換按鈕的最小寬度:

private StackPane getToggler() { 

    ToggleButtonGroup toggleButtonGroup = new ToggleButtonGroup(); 

    ToggleButton toggleButtonYes = new ToggleButton("Yes"); 
    toggleButtonYes.minWidthProperty().bind(toggleButtonYes.prefWidthProperty()); 
    toggleButtonGroup.getToggles().add(toggleButtonYes); 

    ToggleButton toggleButtonNo = new ToggleButton("No"); 
    toggleButtonNo.minWidthProperty().bind(toggleButtonNo.prefWidthProperty()); 
    toggleButtonGroup.getToggles().add(toggleButtonNo); 

    ...; 
} 

+0

完美地工作。謝謝。 –