From 0466c6e005aaa1c5889ba368e3cacb502588adf4 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Tue, 4 Feb 2020 18:12:45 +0800 Subject: [PATCH] Ignore drag action on the switch button of MasterSwitchPreference MasterSwitchPreference provides a toggle switch and it only acts for clicking events. This fix consumes move events to ignore drag actions. Bug: 148770615 Test: make RunSettingsRoboTests ROBOTEST_FILTER=MasterSwitchPreferenceTest Manually drag the switch button of MasterSwitchPreference and observe the switch state is not changed. Change-Id: I0d8b947b32d35b85403fc65605c18c09a4053135 --- src/com/android/settings/widget/MasterSwitchPreference.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/android/settings/widget/MasterSwitchPreference.java b/src/com/android/settings/widget/MasterSwitchPreference.java index b34b162a230..9fe077e4496 100644 --- a/src/com/android/settings/widget/MasterSwitchPreference.java +++ b/src/com/android/settings/widget/MasterSwitchPreference.java @@ -18,6 +18,7 @@ package com.android.settings.widget; import android.content.Context; import android.util.AttributeSet; +import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Switch; @@ -81,6 +82,11 @@ public class MasterSwitchPreference extends RestrictedPreference { } } }); + + // Consumes move events to ignore drag actions. + switchWidget.setOnTouchListener((v, event) -> { + return event.getActionMasked() == MotionEvent.ACTION_MOVE; + }); } mSwitch = (Switch) holder.findViewById(R.id.switchWidget);