Search code examples
c#androidxamarin.android

How to intercept android bottom navigation bar visibility after swipe up


My Xamarin.Android MVVMCross fragment implements View.IOnSystemUiVisibilityChangeListener
Here is fragment OnViewCreated method

View _decorview = ParentActivity.Window.DecorView;
_decorview.SetOnSystemUiVisibilityChangeListener(this);
var uiOptions =
                SystemUiFlags.HideNavigation |
                SystemUiFlags.ImmersiveSticky;
            _decorview.SystemUiVisibility = (StatusBarVisibility)uiOptions;

Here is an OnSystemUiVisibilityChange method:

public void OnSystemUiVisibilityChange([GeneratedEnum] StatusBarVisibility visibility)
        {
            if (((int)visibility & (int)SystemUiFlags.HideNavigation) == 0)
            {
                if (ParentActivity.BottomNavigation != null)
                    ParentActivity.BottomNavigation.Visibility = ViewStates.Gone;
            }
            else
            {
                if (ParentActivity.BottomNavigation != null)
                    ParentActivity.BottomNavigation.Visibility = ViewStates.Visible;
            }
        }

But this method doesn't calls when I swipe up to show navigation bar


Solution

  • Flag SystemUiFlags.ImmersiveSticky prevent receiving a callback when the system UI visibility changes