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);