我按照下面的XML有一个切换小部件,并且有onToggleClicked功能,当你点击开关时它正常工作。但我注意到你实际上可以将开关从一个位置滑动到另一个位置,并且在他的情况下不会触发onClick事件。如何禁用开关的滑动或如何监控开关的状态变化?
非常感谢。
答案 0 :(得分:4)
我发现只有一种方法可以使用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);
我希望这有帮助。