diff options
| author | 2013-01-18 18:21:48 +0100 | |
|---|---|---|
| committer | 2014-11-11 12:35:56 +0100 | |
| commit | 575bb3815a62b20e566ed87023b7473eeeb62e05 (patch) | |
| tree | e141d5e32172948c13682851feb29a104d857158 | |
| parent | 71f83672f297b116988defbe989869e5744cda5e (diff) | |
Consider RTL layout in DPAD navigation in AbsSeekBar
Changes the behavior of onKeyDown for DPAD_LEFT/RIGHT when in RTL
to move the progress in same direction as the DPAD key suggest.
Change-Id: I776a48711571884a10ef9315de78bf4ebffd6e4b
| -rw-r--r-- | core/java/android/widget/AbsSeekBar.java | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java index b2cfdf7da22f..6033c42458d1 100644 --- a/core/java/android/widget/AbsSeekBar.java +++ b/core/java/android/widget/AbsSeekBar.java @@ -704,19 +704,20 @@ public abstract class AbsSeekBar extends ProgressBar { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (isEnabled()) { - int progress = getProgress(); + int increment = mKeyProgressIncrement; switch (keyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: - if (progress <= 0) break; - animateSetProgress(progress - mKeyProgressIncrement); - onKeyChange(); - return true; - + increment = -increment; + // fallthrough case KeyEvent.KEYCODE_DPAD_RIGHT: - if (progress >= getMax()) break; - animateSetProgress(progress + mKeyProgressIncrement); - onKeyChange(); - return true; + increment = isLayoutRtl() ? -increment : increment; + int progress = getProgress() + increment; + if (progress > -mKeyProgressIncrement && + progress < getMax() + mKeyProgressIncrement) { + animateSetProgress(progress); + onKeyChange(); + return true; + } } } |