Fix bug #4796027 left/right padding regression after recent View change (part 2)
- revert previous fix (transforming >=0 to >0)
- initialize mUserPaddingStart and mUserPaddingEnd to -1 in the specific View(Context context) constructor
- cache mUserPaddingStart and mUserPaddingEnd a bit earlier in View(Context context, AttributeSet attrs, int defStyle) constructor
- cache also mUserPaddingStart and mUserPaddingEnd in setPaddingRelative()
Change-Id: Ibe398da7af35f77655d7006444fa49c9c5387f62
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 4403591..683b47e 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -2503,6 +2503,9 @@
mViewFlags = SOUND_EFFECTS_ENABLED | HAPTIC_FEEDBACK_ENABLED | LAYOUT_DIRECTION_INHERIT;
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
setOverScrollMode(OVER_SCROLL_IF_CONTENT_SCROLLS);
+ mUserPaddingStart = -1;
+ mUserPaddingEnd = -1;
+ mUserPaddingRelative = false;
}
/**
@@ -2864,13 +2867,16 @@
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;
+
if (padding >= 0) {
leftPadding = padding;
topPadding = padding;
rightPadding = padding;
bottomPadding = padding;
- startPadding = padding;
- endPadding = padding;
}
// If the user specified the padding (either with android:padding or
@@ -2882,11 +2888,6 @@
rightPadding >= 0 ? rightPadding : mPaddingRight,
bottomPadding >= 0 ? bottomPadding : mPaddingBottom);
- // 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;
-
if (viewFlagMasks != 0) {
setFlags(viewFlagValues, viewFlagMasks);
}
@@ -11026,6 +11027,10 @@
*/
public void setPaddingRelative(int start, int top, int end, int bottom) {
mUserPaddingRelative = true;
+
+ mUserPaddingStart = start;
+ mUserPaddingEnd = end;
+
switch(getResolvedLayoutDirection()) {
case LAYOUT_DIRECTION_RTL:
setPadding(end, top, start, bottom);