From 33f825d4ef6f195b7b14e263122d65d02a203a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rui=20Ara=C3=BAjo?= Date: Thu, 6 Jul 2017 15:42:01 +0200 Subject: [PATCH] Fix Viewpager on Android when using native navigation. --- .../react/views/viewpager/ReactViewPager.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java b/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java index 9a76bace545907..c2f3628e409cd3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java @@ -202,6 +202,26 @@ public void setScrollEnabled(boolean scrollEnabled) { mScrollEnabled = scrollEnabled; } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + // The viewpager reset an internal flag on this method so we need to run another layout pass + // after attaching to window. + this.requestLayout(); + post(measureAndLayout); + } + + private final Runnable measureAndLayout = new Runnable() { + @Override + public void run() { + measure( + MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.EXACTLY)); + layout(getLeft(), getTop(), getRight(), getBottom()); + } + }; + /*package*/ void addViewToAdapter(View child, int index) { getAdapter().addView(child, index); }