切换小部件:onClick事件有效,但是当你滑动交换机时如何监听?

时间:2013-08-22 22:24:12

标签: onclick widget switch-statement ontouchlistener

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

1 个答案:

答案 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);

我希望这有帮助。

相关问题