diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml b/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml index d776c69ad77abec8d1ddeae3d3ff80684b43a8c7..e25531cbcd6ed4f39bd04e9289b7423a0b1f902c 100644 --- a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml +++ b/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml @@ -29,6 +29,7 @@ android:layout_width="24dp" android:layout_height="0dp" android:layout_marginEnd="12dp" + android:layout_marginRight="12dp" android:text="1" app:layout_flexBasisPercent="50%" app:layout_flexGrow="1" diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml b/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml index e62884d45183b12221fbc4bac1e81ffd82e8cf87..4cc389b9e639386835304260df550c9dbba48076 100644 --- a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml +++ b/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml @@ -29,6 +29,7 @@ android:layout_width="24dp" android:layout_height="150dp" android:layout_marginEnd="12dp" + android:layout_marginRight="12dp" android:text="1" app:layout_flexShrink="1" /> diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java b/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java index a05a243a01a47630cb418547dea4256dfd0a602a..65e07317dc1b5f61bc685ba6d705cc53af3bbd3e 100644 --- a/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java +++ b/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java @@ -738,6 +738,11 @@ class FlexboxHelper { /** * Returns the flexItem's start margin in the main axis. Either start or top. + * For the backward compatibility for API level < 17, the horizontal margin is returned using + * {@link FlexItem#getMarginLeft} (ViewGroup.MarginLayoutParams#getMarginStart isn't available + * in API level < 17). Thus this method needs to be used with {@link #getFlexItemMarginEndMain} + * not to misuse the margin in RTL. + * * * @param flexItem the flexItem * @param isMainHorizontal is the main axis horizontal @@ -745,7 +750,7 @@ class FlexboxHelper { */ private int getFlexItemMarginStartMain(FlexItem flexItem, boolean isMainHorizontal) { if (isMainHorizontal) { - return flexItem.getMarginStart(); + return flexItem.getMarginLeft(); } return flexItem.getMarginTop(); @@ -753,6 +758,10 @@ class FlexboxHelper { /** * Returns the flexItem's end margin in the main axis. Either end or bottom. + * For the backward compatibility for API level < 17, the horizontal margin is returned using + * {@link FlexItem#getMarginRight} (ViewGroup.MarginLayoutParams#getMarginEnd isn't available + * in API level < 17). Thus this method needs to be used with + * {@link #getFlexItemMarginStartMain} not to misuse the margin in RTL. * * @param flexItem the flexItem * @param isMainHorizontal is the main axis horizontal @@ -760,7 +769,7 @@ class FlexboxHelper { */ private int getFlexItemMarginEndMain(FlexItem flexItem, boolean isMainHorizontal) { if (isMainHorizontal) { - return flexItem.getMarginEnd(); + return flexItem.getMarginRight(); } return flexItem.getMarginBottom(); @@ -768,6 +777,10 @@ class FlexboxHelper { /** * Returns the flexItem's start margin in the cross axis. Either start or top. + * For the backward compatibility for API level < 17, the horizontal margin is returned using + * {@link FlexItem#getMarginLeft} (ViewGroup.MarginLayoutParams#getMarginStart isn't available + * in API level < 17). Thus this method needs to be used with + * {@link #getFlexItemMarginEndCross} to not to misuse the margin in RTL. * * @param flexItem the flexItem * @param isMainHorizontal is the main axis horizontal @@ -778,11 +791,15 @@ class FlexboxHelper { return flexItem.getMarginTop(); } - return flexItem.getMarginStart(); + return flexItem.getMarginLeft(); } /** * Returns the flexItem's end margin in the cross axis. Either end or bottom. + * For the backward compatibility for API level < 17, the horizontal margin is returned using + * {@link FlexItem#getMarginRight} (ViewGroup.MarginLayoutParams#getMarginEnd isn't available + * in API level < 17). Thus this method needs to be used with + * {@link #getFlexItemMarginStartCross} to not to misuse the margin in RTL. * * @param flexItem the flexItem * @param isMainHorizontal is the main axis horizontal @@ -793,7 +810,7 @@ class FlexboxHelper { return flexItem.getMarginBottom(); } - return flexItem.getMarginEnd(); + return flexItem.getMarginRight(); } /**