From 4f8efd2873516dd2d3c30661dffce99b5fa76f57 Mon Sep 17 00:00:00 2001 From: Krzysztof Magiera Date: Wed, 27 Nov 2019 22:17:52 +0100 Subject: [PATCH] Revert "Fix navbar window fitting on Android. (#235)" This reverts commit 0927e03687662c733582c6419396bbb20a95027b. --- .../com/swmansion/rnscreens/ScreenStack.java | 31 +------------------ .../rnscreens/ScreenStackFragment.java | 6 ++-- .../rnscreens/ScreenStackHeaderConfig.java | 1 - 3 files changed, 3 insertions(+), 35 deletions(-) diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java b/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java index 2511315e..58bb884f 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java @@ -1,10 +1,7 @@ package com.swmansion.rnscreens; import android.content.Context; -import android.view.View; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; @@ -45,15 +42,6 @@ public class ScreenStack extends ScreenContainer { public ScreenStack(Context context) { super(context); - - ViewCompat.setOnApplyWindowInsetsListener(this, - new androidx.core.view.OnApplyWindowInsetsListener() { - @Override - public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { - setWindowInsets(insets); - return insets; - } - }); } public void dismiss(ScreenStackFragment screenFragment) { @@ -75,24 +63,6 @@ public class ScreenStack extends ScreenContainer { throw new IllegalStateException("Stack has no root screen set"); } - private void setWindowInsets(WindowInsetsCompat insets) { - // we allow each screen to handle insets separately as they are all attached to the same parent - // and take up full screen. Therefore we make a copy of each inset object before passing it down - // to views. - boolean consumed = false; - for (int i = mScreenFragments.size() - 1; i >= 0; i--) { - ScreenStackFragment screen = mScreenFragments.get(i); - if (!mDismissed.contains(screen) && screen.getView() != null) { - if (ViewCompat.dispatchApplyWindowInsets(screen.getView(), new WindowInsetsCompat(insets)).isConsumed()) { - consumed = true; - } - } - } - if (consumed) { - insets.consumeSystemWindowInsets(); - } - } - @Override protected ScreenStackFragment adapt(Screen screen) { return new ScreenStackFragment(screen); @@ -111,6 +81,7 @@ public class ScreenStack extends ScreenContainer { // longer attached. fm.popBackStack(BACK_STACK_TAG, FragmentManager.POP_BACK_STACK_INCLUSIVE); } + } @Override diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.java b/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.java index 5b3b138e..c38906d6 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.java +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.java @@ -64,22 +64,20 @@ public class ScreenStackFragment extends ScreenFragment { @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { CoordinatorLayout view = new CoordinatorLayout(getContext()); - view.setFitsSystemWindows(true); CoordinatorLayout.LayoutParams params = new CoordinatorLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); + params.setBehavior(new AppBarLayout.ScrollingViewBehavior()); mScreenView.setLayoutParams(params); view.addView(mScreenView); mAppBarLayout = new AppBarLayout(getContext()); - mAppBarLayout.setFitsSystemWindows(true); // By default AppBarLayout will have a background color set but since we cover the whole layout // with toolbar (that can be semi-transparent) the bar layout background color does not pay a // role. On top of that it breaks screens animations when alfa offscreen compositing is off // (which is the default) mAppBarLayout.setBackgroundColor(Color.TRANSPARENT); mAppBarLayout.setLayoutParams(new AppBarLayout.LayoutParams( - AppBarLayout.LayoutParams.MATCH_PARENT, - AppBarLayout.LayoutParams.WRAP_CONTENT)); + AppBarLayout.LayoutParams.MATCH_PARENT, AppBarLayout.LayoutParams.WRAP_CONTENT)); view.addView(mAppBarLayout); if (mToolbar != null) { diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.java b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.java index 11453f49..c9789ba2 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.java +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.java @@ -47,7 +47,6 @@ public class ScreenStackHeaderConfig extends ViewGroup { setVisibility(View.GONE); mToolbar = new Toolbar(context); - mToolbar.setFitsSystemWindows(true); // set primary color as background by default TypedValue tv = new TypedValue();