如何使切换按钮组响应

时间:2019-10-24 10:13:48

标签: sapui5

切换按钮的xml:

<HBox id="toggleButtons1" fitContainer="false" class="fullWidthButtons" alignItems="Center">
            <items>
        <ToggleButton text="BUTTON1" enabled="true" pressed="true" press=".onPress1" class="firsttogglebutton" >
            <layoutData>
            <FlexItemData growFactor="1" />
          </layoutData>
        </ToggleButton>
        <ToggleButton text="BUTTON2" enabled="true" pressed="false" press=".onPress2">
            <layoutData>
            <FlexItemData growFactor="1" />
          </layoutData>
        </ToggleButton>
        <ToggleButton text="BUTTON3" enabled="true" pressed="false" press=".onPress3">
            <layoutData>
            <FlexItemData growFactor="1" />
          </layoutData>
        </ToggleButton>
            </items>
    </HBox>
  • 应用了一些不需要的CSS猜测

我正在检查响应性,当在中小型设备中查看时,它适合所有大小的设备:

参考:

enter image description here

但是当我更改(放大)按钮内的文本时,它没有响应。可能是什么原因?该如何克服?

enter image description here

我很幸运用FlexBox代替HBox,但是还是一样(也许我应该包括更多属性)。

Controller.js:

sap.ui.define("myController", [
  "sap/ui/core/mvc/Controller"
], function(Controller) {
  "use strict";

  var toggleButtons1;

  return Controller.extend("myController", {
    onInit: function() {
      toggleButtons1 = this.byId("toggleButtons1").getItems();
    },

    onPressNext: function(e) {
      for (var i = 0; i < toggleButtons1.length - 1; ++i) {
        if (toggleButtons1[i].getPressed()) {
          toggleButtons1[i].setPressed(false);
          toggleButtons1[i + 1].setPressed(true);
          break;
        }
      }
    },

    onPressPrevious: function() {
      for (var i = toggleButtons1.length - 1; i > 0; --i) {
        if (toggleButtons1[i].getPressed()) {
          toggleButtons1[i - 1].setPressed(true);
        }
      }
    },

    onPress: function(e) {
      var btn = e.getSource();
      if(!btn.getPressed()) {
        btn.setPressed(true);
        return;
      }
      for (var i = 0; i < toggleButtons1.length; ++i) {
        if (toggleButtons1[i] != btn) {
          toggleButtons1[i].setPressed(false);
        }
      }
    },

    onPress1: function(e) {
       this.onPress(e);
       alert("Do something here!");
    }
  });
});

1 个答案:

答案 0 :(得分:1)

view.xml

<l:Grid id="gridToggleButtons" containerQuery="true" defaultSpan="XL2 L4 M4 S6">
  <ToggleButton text="BUTTON1EEE" enabled="true" pressed="true" press=".onPress1" class="firsttogglebutton" />
  <ToggleButton text="BUTTON2EEE" enabled="true" pressed="false" press=".onPress2" />
  <ToggleButton text="BUTTON3EEE" enabled="true" pressed="false" press=".onPress3" />
</l:Grid>

controller.js

var oGrid = this.byId("gridToggleButtons");
var oBtns = oGrid.getContent();
var oBUTTON1EEE = oBtns[0];
var oBUTTON2EEE = oBtns[1];
var oBUTTON3EEE = oBtns[2];

注意:containerQuery用于根据网格大小而不是设备大小(大,中和小)获得大小。 defaultSpan是根据您的要求设置的。有关网格的更多信息,请访问Grid API