Fix how RelativeLayout handles alignParentBottom/Right when dimension is wrap_content.
Bug: #2194109.
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index fad994b..1aa1df3 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -291,6 +291,8 @@
         }        
     }
 
+    // TODO: we need to find another way to implement RelativeLayout
+    // This implementation cannot handle every case
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         if (mDirtyHierarchy) {
@@ -438,6 +440,10 @@
                         final int[] rules = params.getRules();
                         if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_HORIZONTAL] != 0) {
                             centerHorizontal(child, params, width);
+                        } else if (rules[ALIGN_PARENT_RIGHT] != 0) {
+                            final int childWidth = child.getMeasuredWidth();
+                            params.mLeft = width - mPaddingRight - childWidth;
+                            params.mRight = params.mLeft + childWidth;
                         }
                     }
                 }
@@ -464,6 +470,10 @@
                         final int[] rules = params.getRules();
                         if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_VERTICAL] != 0) {
                             centerVertical(child, params, height);
+                        } else if (rules[ALIGN_PARENT_BOTTOM] != 0) {
+                            final int childHeight = child.getMeasuredHeight();
+                            params.mTop = height - mPaddingBottom - childHeight;
+                            params.mBottom = params.mTop + childHeight;
                         }
                     }
                 }
@@ -673,7 +683,7 @@
                 params.mRight = params.mLeft + child.getMeasuredWidth();
             }
         }
-        return false;
+        return rules[ALIGN_PARENT_RIGHT] != 0;
     }
 
     private boolean positionChildVertical(View child, LayoutParams params, int myHeight,
@@ -702,7 +712,7 @@
                 params.mBottom = params.mTop + child.getMeasuredHeight();
             }
         }
-        return false;
+        return rules[ALIGN_PARENT_BOTTOM] != 0;
     }
 
     private void applyHorizontalSizeRules(LayoutParams childParams, int myWidth) {