开关小部件:onClick 事件有效,但滑动开关时如何收听?

Ale*_*lex 2 widget onclick switch-statement ontouchlistener

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

小智 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
        }
    };);
Run Code Online (Sandbox Code Playgroud)

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

exampleSwitch.setOnCheckedChangeListener(null);
exampleSwitch.setChecked(boolean);
exampleSwitch.setOnCheckedChangeListener(listener);
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助。