diff --git a/core/java/android/preference/SeekBarPreference.java b/core/java/android/preference/SeekBarPreference.java index 67f64090db160..5414f00079702 100644 --- a/core/java/android/preference/SeekBarPreference.java +++ b/core/java/android/preference/SeekBarPreference.java @@ -96,18 +96,15 @@ public class SeekBarPreference extends Preference @Override public boolean onKey(View v, int keyCode, KeyEvent event) { - if (event.getAction() != KeyEvent.ACTION_UP) { - if (keyCode == KeyEvent.KEYCODE_PLUS - || keyCode == KeyEvent.KEYCODE_EQUALS) { - setProgress(getProgress() + 1); - return true; - } - if (keyCode == KeyEvent.KEYCODE_MINUS) { - setProgress(getProgress() - 1); - return true; - } + if (event.getAction() != KeyEvent.ACTION_DOWN) { + return false; } - return false; + + SeekBar seekBar = (SeekBar) v.findViewById(com.android.internal.R.id.seekbar); + if (seekBar == null) { + return false; + } + return seekBar.onKeyDown(keyCode, event); } public void setMax(int max) { diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java index 0fd15429b8047..10aefe4eb714f 100644 --- a/core/java/android/widget/AbsSeekBar.java +++ b/core/java/android/widget/AbsSeekBar.java @@ -706,9 +706,12 @@ public abstract class AbsSeekBar extends ProgressBar { int increment = mKeyProgressIncrement; switch (keyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: + case KeyEvent.KEYCODE_MINUS: increment = -increment; // fallthrough case KeyEvent.KEYCODE_DPAD_RIGHT: + case KeyEvent.KEYCODE_PLUS: + case KeyEvent.KEYCODE_EQUALS: increment = isLayoutRtl() ? -increment : increment; if (setProgressInternal(getProgress() + increment, true, true)) {