diff options
| author | Fabrice Di Meglio <fdimeglio@google.com> | 2012-07-02 19:12:40 -0700 |
|---|---|---|
| committer | Fabrice Di Meglio <fdimeglio@google.com> | 2012-07-09 16:03:44 -0700 |
| commit | 4ab6968bb7014e6f4c6c4e4bd076626cf07f218b (patch) | |
| tree | 8bdea69fc324f0b5594bf7271cbd5659fda26479 /core/java/android/widget/LinearLayout.java | |
| parent | 3a4832aa64db0f8b63a5e95b08d153c35749c260 (diff) | |
Fix dividers position for LinearLayout
- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)
Change-Id: I81a294966ec3989785c0b55d2e4d418ddc89fadd
Diffstat (limited to 'core/java/android/widget/LinearLayout.java')
| -rw-r--r-- | core/java/android/widget/LinearLayout.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java index 2391898dfa3d..4e114d8d9b6a 100644 --- a/core/java/android/widget/LinearLayout.java +++ b/core/java/android/widget/LinearLayout.java @@ -345,28 +345,42 @@ public class LinearLayout extends ViewGroup { void drawDividersHorizontal(Canvas canvas) { final int count = getVirtualChildCount(); + final boolean isLayoutRtl = isLayoutRtl(); for (int i = 0; i < count; i++) { final View child = getVirtualChildAt(i); if (child != null && child.getVisibility() != GONE) { if (hasDividerBeforeChildAt(i)) { final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - final int left = child.getLeft() - lp.leftMargin - mDividerWidth; - drawVerticalDivider(canvas, left); + final int position; + if (isLayoutRtl) { + position = child.getRight() + lp.rightMargin; + } else { + position = child.getLeft() - lp.leftMargin - mDividerWidth; + } + drawVerticalDivider(canvas, position); } } } if (hasDividerBeforeChildAt(count)) { final View child = getVirtualChildAt(count - 1); - int right = 0; + int position; if (child == null) { - right = getWidth() - getPaddingRight() - mDividerWidth; + if (isLayoutRtl) { + position = getPaddingLeft(); + } else { + position = getWidth() - getPaddingRight() - mDividerWidth; + } } else { final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - right = child.getRight() + lp.rightMargin; + if (isLayoutRtl) { + position = child.getLeft() - lp.leftMargin - mDividerWidth; + } else { + position = child.getRight() + lp.rightMargin; + } } - drawVerticalDivider(canvas, right); + drawVerticalDivider(canvas, position); } } |
