summaryrefslogtreecommitdiff
path: root/core/java/android/widget/LinearLayout.java
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2012-07-02 19:12:40 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2012-07-09 16:03:44 -0700
commit4ab6968bb7014e6f4c6c4e4bd076626cf07f218b (patch)
tree8bdea69fc324f0b5594bf7271cbd5659fda26479 /core/java/android/widget/LinearLayout.java
parent3a4832aa64db0f8b63a5e95b08d153c35749c260 (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.java26
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);
}
}