diff options
| author | Jorn Jacobsson <jorn.jacobsson@sonymobile.com> | 2013-01-22 14:55:53 +0100 |
|---|---|---|
| committer | Alan Viverette <alanv@google.com> | 2015-04-24 12:34:50 -0700 |
| commit | 599b64f937dc30468344f2cbdd27861431f0f459 (patch) | |
| tree | d292172a0a3f03163e4de35da6f2c7c5a9c0169f /core/java/android/widget/GridView.java | |
| parent | a09c5eed32ff6371a70c39e3f92bb8620066be52 (diff) | |
Change direction of DPAD_LEFT and DPAD_RIGHT if LayoutDirection is RTL
Changes the behaviour of onKeyDown for DPAD_LEFT/RIGHT when the
layoutDirection is RTL, to move the focus in the correct direction.
Change-Id: I889649788d1e6f347aed90d6683d9f4dd6807da0
Diffstat (limited to 'core/java/android/widget/GridView.java')
| -rw-r--r-- | core/java/android/widget/GridView.java | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java index 9ecdc9c35214..c95977445b47 100644 --- a/core/java/android/widget/GridView.java +++ b/core/java/android/widget/GridView.java @@ -1854,20 +1854,19 @@ public class GridView extends AbsListView { moved = true; } break; - case FOCUS_LEFT: - if (selectedPosition > startOfRowPos) { - mLayoutMode = LAYOUT_MOVE_SELECTION; - setSelectionInt(Math.max(0, selectedPosition - 1)); - moved = true; - } - break; - case FOCUS_RIGHT: - if (selectedPosition < endOfRowPos) { - mLayoutMode = LAYOUT_MOVE_SELECTION; - setSelectionInt(Math.min(selectedPosition + 1, mItemCount - 1)); - moved = true; - } - break; + } + + final boolean isLayoutRtl = isLayoutRtl(); + if (selectedPosition > startOfRowPos && ((direction == FOCUS_LEFT && !isLayoutRtl) || + (direction == FOCUS_RIGHT && isLayoutRtl))) { + mLayoutMode = LAYOUT_MOVE_SELECTION; + setSelectionInt(Math.max(0, selectedPosition - 1)); + moved = true; + } else if (selectedPosition < endOfRowPos && ((direction == FOCUS_LEFT && isLayoutRtl) || + (direction == FOCUS_RIGHT && !isLayoutRtl))) { + mLayoutMode = LAYOUT_MOVE_SELECTION; + setSelectionInt(Math.min(selectedPosition + 1, mItemCount - 1)); + moved = true; } if (moved) { |
