RN: Fix Drawing Rect for ReactScrollView

Summary:
Fixes `ReactScrollView` so that it respects the drawing rect (i.e. the bounding box of the element).

In JavaScript, this is the backing view for `ScrollView` (vertical) on Android.

Reviewed By: fadinghorse

Differential Revision: D8710256

fbshipit-source-id: f3bd96e39b8569cfcb21e486944b70fdb57c12b6
This commit is contained in:
Tim Yung 2018-07-01 16:30:40 -07:00 committed by Facebook Github Bot
parent 6dcadca712
commit 6a16bec882
2 changed files with 4 additions and 0 deletions

View File

@ -102,6 +102,7 @@ public class ViewProps {
public static final String OVERFLOW = "overflow"; public static final String OVERFLOW = "overflow";
public static final String HIDDEN = "hidden"; public static final String HIDDEN = "hidden";
public static final String SCROLL = "scroll";
public static final String VISIBLE = "visible"; public static final String VISIBLE = "visible";
public static final String ALLOW_FONT_SCALING = "allowFontScaling"; public static final String ALLOW_FONT_SCALING = "allowFontScaling";

View File

@ -47,6 +47,7 @@ public class ReactScrollView extends ScrollView implements ReactClippingViewGrou
private final OnScrollDispatchHelper mOnScrollDispatchHelper = new OnScrollDispatchHelper(); private final OnScrollDispatchHelper mOnScrollDispatchHelper = new OnScrollDispatchHelper();
private final @Nullable OverScroller mScroller; private final @Nullable OverScroller mScroller;
private final VelocityHelper mVelocityHelper = new VelocityHelper(); private final VelocityHelper mVelocityHelper = new VelocityHelper();
private final Rect mRect = new Rect(); // for reuse to avoid allocation
private @Nullable Rect mClippingRect; private @Nullable Rect mClippingRect;
private boolean mDoneFlinging; private boolean mDoneFlinging;
@ -351,6 +352,8 @@ public class ReactScrollView extends ScrollView implements ReactClippingViewGrou
mEndBackground.draw(canvas); mEndBackground.draw(canvas);
} }
} }
getDrawingRect(mRect);
canvas.clipRect(mRect);
super.draw(canvas); super.draw(canvas);
} }