Merge "Move ScrollView scroll capture to the center" into sc-dev
This commit is contained in:
@@ -125,10 +125,19 @@ public class ScrollViewCaptureHelper implements ScrollCaptureViewHelper<ViewGrou
|
||||
view.getScrollX() - contentView.getLeft(),
|
||||
view.getScrollY() - contentView.getTop());
|
||||
|
||||
Rect input = new Rect(requestedContentBounds);
|
||||
|
||||
// Expand input rect to get the requested rect to be in the center
|
||||
int remainingHeight = view.getHeight() - view.getPaddingTop()
|
||||
- view.getPaddingBottom() - input.height();
|
||||
if (remainingHeight > 0) {
|
||||
input.inset(0, -remainingHeight / 2);
|
||||
}
|
||||
|
||||
// requestRect is now local to contentView as requestedContentBounds
|
||||
// contentView (and each parent in turn if possible) will be scrolled
|
||||
// (if necessary) to make all of requestedContent visible, (if possible!)
|
||||
contentView.requestRectangleOnScreen(new Rect(requestedContentBounds), true);
|
||||
contentView.requestRectangleOnScreen(input, true);
|
||||
|
||||
// update new offset between starting and current scroll position
|
||||
scrollDelta = view.getScrollY() - mStartScrollY;
|
||||
|
||||
@@ -164,7 +164,8 @@ public class ScrollViewCaptureHelperTest {
|
||||
assertRectEquals(request, scrollResult.requestedArea);
|
||||
assertRectEquals(request, scrollResult.availableArea);
|
||||
assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
|
||||
assertEquals(CAPTURE_HEIGHT, scrollResult.scrollDelta);
|
||||
assertEquals(CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
|
||||
scrollResult.scrollDelta);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -182,7 +183,8 @@ public class ScrollViewCaptureHelperTest {
|
||||
assertRectEquals(request, scrollResult.requestedArea);
|
||||
assertRectEquals(request, scrollResult.availableArea);
|
||||
assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
|
||||
assertEquals(-CAPTURE_HEIGHT, scrollResult.scrollDelta);
|
||||
assertEquals(-CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
|
||||
scrollResult.scrollDelta);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -201,7 +203,8 @@ public class ScrollViewCaptureHelperTest {
|
||||
assertRectEquals(request, scrollResult.requestedArea);
|
||||
assertRectEquals(request, scrollResult.availableArea);
|
||||
assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
|
||||
assertEquals(CAPTURE_HEIGHT, scrollResult.scrollDelta);
|
||||
assertEquals(CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
|
||||
scrollResult.scrollDelta);
|
||||
|
||||
}
|
||||
|
||||
@@ -220,7 +223,8 @@ public class ScrollViewCaptureHelperTest {
|
||||
assertRectEquals(request, scrollResult.requestedArea);
|
||||
assertRectEquals(request, scrollResult.availableArea);
|
||||
assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
|
||||
assertEquals(-CAPTURE_HEIGHT, scrollResult.scrollDelta);
|
||||
assertEquals(-CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
|
||||
scrollResult.scrollDelta);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user