summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/View.java
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2012-03-06 15:41:11 -0800
committerFabrice Di Meglio <fdimeglio@google.com>2012-03-07 18:01:14 -0800
commit509708deb8d70def41be56145df07f9331f48c84 (patch)
tree99cfd3a46dfb34db6dab80cdb6496a1269abde78 /core/java/android/view/View.java
parent7d3c690e723e3fb82775baad5942234cd30f8d2d (diff)
downloadframeworks_base-509708deb8d70def41be56145df07f9331f48c84.zip
frameworks_base-509708deb8d70def41be56145df07f9331f48c84.tar.gz
frameworks_base-509708deb8d70def41be56145df07f9331f48c84.tar.bz2
Fix View padding resolution
- make setPadding() and setPaddingRelative() share same code Change-Id: Iaefa82deb29d9efd6b3f88c751daf503c6b8f774
Diffstat (limited to 'core/java/android/view/View.java')
-rw-r--r--core/java/android/view/View.java32
1 files changed, 23 insertions, 9 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 1e6bca5..ec340ec 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -3093,13 +3093,13 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
setBackgroundDrawable(background);
}
- mUserPaddingRelative = (startPadding >= 0 || endPadding >= 0);
-
// Cache user padding as we cannot fully resolve padding here (we dont have yet the resolved
// layout direction). Those cached values will be used later during padding resolution.
mUserPaddingStart = startPadding;
mUserPaddingEnd = endPadding;
+ updateUserPaddingRelative();
+
if (padding >= 0) {
leftPadding = padding;
topPadding = padding;
@@ -3146,6 +3146,10 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
computeOpaqueFlags();
}
+ private void updateUserPaddingRelative() {
+ mUserPaddingRelative = (mUserPaddingStart >= 0 || mUserPaddingEnd >= 0);
+ }
+
/**
* Non-public constructor for use in testing
*/
@@ -9599,6 +9603,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
// Set to resolved
mPrivateFlags2 |= LAYOUT_DIRECTION_RESOLVED;
onResolvedLayoutDirectionChanged();
+ // Resolve padding
+ resolvePadding();
}
/**
@@ -9653,7 +9659,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
mUserPaddingBottom = (mUserPaddingBottom >= 0) ? mUserPaddingBottom : mPaddingBottom;
- recomputePadding();
+ if(isPaddingRelative()) {
+ setPaddingRelative(mUserPaddingStart, mPaddingTop, mUserPaddingEnd, mUserPaddingBottom);
+ } else {
+ recomputePadding();
+ }
onPaddingChanged(resolvedLayoutDirection);
}
@@ -12220,15 +12230,20 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
* @param bottom the bottom padding in pixels
*/
public void setPadding(int left, int top, int right, int bottom) {
- boolean changed = false;
-
+ mUserPaddingStart = -1;
+ mUserPaddingEnd = -1;
mUserPaddingRelative = false;
+ internalSetPadding(left, top, right, bottom);
+ }
+
+ private void internalSetPadding(int left, int top, int right, int bottom) {
mUserPaddingLeft = left;
mUserPaddingRight = right;
mUserPaddingBottom = bottom;
final int viewFlags = mViewFlags;
+ boolean changed = false;
// Common case is there are no scroll bars.
if ((viewFlags & (SCROLLBARS_VERTICAL|SCROLLBARS_HORIZONTAL)) != 0) {
@@ -12297,18 +12312,17 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
* @param bottom the bottom padding in pixels
*/
public void setPaddingRelative(int start, int top, int end, int bottom) {
- mUserPaddingRelative = true;
-
mUserPaddingStart = start;
mUserPaddingEnd = end;
+ mUserPaddingRelative = true;
switch(getResolvedLayoutDirection()) {
case LAYOUT_DIRECTION_RTL:
- setPadding(end, top, start, bottom);
+ internalSetPadding(end, top, start, bottom);
break;
case LAYOUT_DIRECTION_LTR:
default:
- setPadding(start, top, end, bottom);
+ internalSetPadding(start, top, end, bottom);
}
}