2

我有一个根据下面的 XML 的开关小部件,并具有 onToggleClicked 功能,当您单击开关时它工作正常。但我注意到的是,您实际上可以将开关从一个位置滑动到另一个位置,并且在他的情况下不会触发 onClick 事件。如何禁用开关的滑动或如何监控开关的状态变化?多谢。

4

1 回答 1

5

我发现只有一种方法可以使用 CompoundButton 类中的 OnCheckedChangeListener 来监听开关的滑动事件。像这样,例如:

exampleSwitch = (Switch) findViewById(R.id.exampleSwitchID);
exampleSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //your actions when the button has changed the status
            //the boolean isChecked tells you if the button is activated or not
        }
    };);

这可能存在的唯一问题是,如果您以编程方式更改按钮的状态(exampleSwitch.setChecked(boolean)),它将触发侦听器。如果您不希望发生这种情况,请在设置按钮状态之前将侦听器设置为 null。例如:

exampleSwitch.setOnCheckedChangeListener(null);
exampleSwitch.setChecked(boolean);
exampleSwitch.setOnCheckedChangeListener(listener);

我希望这会有所帮助。

于 2014-07-17T13:18:51.160 回答