Enable hover states for SeekBarPreference
Bug: 201499839
Test: manual testing on pixel device with wired mouse
Note: change was originally set for TM-QPR branch, but now targeting UDC-DEV instead
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ec11542cbe14f874c9fe17ee4c2a4c4e29ea748c)
Merged-In: Ibbbd0e0ef627576acb5eb3f4acb6d40dcceb0371
Change-Id: Ibbbd0e0ef627576acb5eb3f4acb6d40dcceb0371
diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java
index 30884ee..3dd72f9 100644
--- a/src/com/android/settings/widget/SeekBarPreference.java
+++ b/src/com/android/settings/widget/SeekBarPreference.java
@@ -27,6 +27,7 @@
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.KeyEvent;
+import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.SeekBar;
@@ -42,7 +43,7 @@
* Based on android.preference.SeekBarPreference, but uses support preference as base.
*/
public class SeekBarPreference extends RestrictedPreference
- implements OnSeekBarChangeListener, View.OnKeyListener {
+ implements OnSeekBarChangeListener, View.OnKeyListener, View.OnHoverListener {
public static final int HAPTIC_FEEDBACK_MODE_NONE = 0;
public static final int HAPTIC_FEEDBACK_MODE_ON_TICKS = 1;
@@ -128,6 +129,7 @@
public void onBindViewHolder(PreferenceViewHolder view) {
super.onBindViewHolder(view);
view.itemView.setOnKeyListener(this);
+ view.itemView.setOnHoverListener(this);
mSeekBar = (SeekBar) view.findViewById(
com.android.internal.R.id.seekbar);
mSeekBar.setOnSeekBarChangeListener(this);
@@ -414,6 +416,19 @@
notifyChanged();
}
+ @Override
+ public boolean onHover(View v, MotionEvent event) {
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_HOVER_ENTER:
+ v.setHovered(true);
+ break;
+ case MotionEvent.ACTION_HOVER_EXIT:
+ v.setHovered(false);
+ break;
+ }
+ return false;
+ }
+
/**
* SavedState, a subclass of {@link BaseSavedState}, will store the state
* of MyPreference, a subclass of Preference.