public override void OnFragmentResumed(AndroidX.Fragment.App.FragmentManager fm, AndroidX.Fragment.App.Fragment f) { if (f is NavigationViewFragment pf) { _stackNavigationManager.OnNavigationViewFragmentResumed(fm, pf); } AToolbar?nativeToolbar = null; IToolbar?toolbar = null; if (_stackNavigationManager.NavigationView?.Toolbar is IToolbar tb && tb?.Handler?.NativeView is AToolbar ntb) { nativeToolbar = ntb; toolbar = tb; } // Wire up the toolbar to the currently made visible Fragment var controller = NavHostFragment.FindNavController(f); var appbarConfigBuilder = new AppBarConfiguration .Builder(_stackNavigationManager.NavGraph); if (nativeToolbar != null && toolbar != null && toolbar.Handler?.MauiContext != null) { if (toolbar.Handler is ToolbarHandler th) { th.SetupWithNavController(controller, _stackNavigationManager); } } }
void SetupToolbar() { if (_stackNavigationManager == null || _navController == null) { return; } var appbarConfigBuilder = new AppBarConfiguration .Builder(_stackNavigationManager.NavGraph); if (_drawerLayout != null) { appbarConfigBuilder = appbarConfigBuilder.SetOpenableLayout(_drawerLayout); } var appbarConfig = appbarConfigBuilder.Build(); NavigationUI .SetupWithNavController(PlatformView, _navController, appbarConfig); // the call to SetupWithNavController resets the Navigation Icon UpdateValue(nameof(IToolbar.BackButtonVisible)); PlatformView.SetNavigationOnClickListener(BackNavigationClick); }
protected override void OnCreate2(Bundle?savedInstanceState) { base.OnCreate2(savedInstanceState); mainActivity = this; //InitCommunityFixVpnServiceActivityResultLauncher(); SetSupportActionBar(binding !.toolbar); var appBarConfiguration = new AppBarConfiguration.Builder( Resource.Id.navigation_local_auth, Resource.Id.navigation_asf_plus, Resource.Id.navigation_community_fix, Resource.Id.navigation_game_list, Resource.Id.navigation_my) .Build(); navController = Navigation.FindNavController(this, Resource.Id.nav_host_fragment_activity_main); R.Subscribe(() => { SetSubPageTitle(Resource.Id.navigation_local_auth, LocalAuthPageViewModel.DisplayName); SetSubPageTitle(Resource.Id.navigation_asf_plus, ArchiSteamFarmPlusPageViewModel.DisplayName); SetSubPageTitle(Resource.Id.navigation_my, MyPageViewModel.DisplayName); SetSubPageTitle(Resource.Id.navigation_community_fix, AppResources.CommunityFix); //SetSubPageTitle(Resource.Id.navigation_game_list, AppResources.GameList); }).AddTo(this); NavigationUI.SetupActionBarWithNavController(this, navController, appBarConfiguration); NavigationUI.SetupWithNavController(binding !.nav_view, navController); }
public override void OnFragmentResumed(AndroidX.Fragment.App.FragmentManager fm, AndroidX.Fragment.App.Fragment f) { if (f is NavigationViewFragment pf) { _stackNavigationManager.OnNavigationViewFragmentResumed(fm, pf); } AToolbar?nativeToolbar = null; IToolbar?toolbar = null; if (_stackNavigationManager.NavigationView?.Toolbar is IToolbar tb && tb?.Handler?.NativeView is AToolbar ntb) { nativeToolbar = ntb; toolbar = tb; } // Wire up the toolbar to the currently made visible Fragment var controller = NavHostFragment.FindNavController(f); var appbarConfigBuilder = new AppBarConfiguration .Builder(_stackNavigationManager.NavGraph); if (nativeToolbar != null && toolbar != null) { // TODO: MAUI Hackey way of wiring up Drawer Layout // But currently you can only have a nav bar with a Navigation View if (nativeToolbar.Parent is DrawerLayout dl1) { appbarConfigBuilder = appbarConfigBuilder.SetOpenableLayout(dl1); } else if (nativeToolbar.Parent?.Parent is DrawerLayout dl2) { appbarConfigBuilder = appbarConfigBuilder.SetOpenableLayout(dl2); } else if (nativeToolbar.Parent?.Parent?.Parent is DrawerLayout dl3) { appbarConfigBuilder = appbarConfigBuilder.SetOpenableLayout(dl3); } var appbarConfig = appbarConfigBuilder.Build(); NavigationUI .SetupWithNavController(nativeToolbar, controller, appbarConfig); // the call to SetupWithNavController resets the Navigation Icon toolbar.Handler?.UpdateValue(nameof(IToolbar.BackButtonVisible)); if (toolbar.BackButtonVisible && toolbar.IsVisible) { // Wiring up to this will break the Drawer Toggle button if it's visible nativeToolbar.SetNavigationOnClickListener(_stackNavigationManager.BackClick); } } }
public override void OnFragmentViewCreated(AndroidX.Fragment.App.FragmentManager fm, AndroidX.Fragment.App.Fragment f, AView v, Bundle savedInstanceState) { base.OnFragmentViewCreated(fm, f, v, savedInstanceState); var controller = NavHostFragment.FindNavController(f); var appbarConfig = new AppBarConfiguration .Builder(controller.Graph) .Build(); // These have to get called/wired up every time a new fragment view is created // I'm not clear why this can't just be done once NavigationUI .SetupWithNavController(_navigationManager.Toolbar, controller, appbarConfig); _navigationManager.Toolbar.SetNavigationOnClickListener(_navigationManager.BackClick); }
public override void OnViewCreated(AView view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); var controller = NavHostFragment.FindNavController(this); var appbarConfig = new AppBarConfiguration .Builder(controller.Graph) .Build(); NavigationUI .SetupWithNavController(NavDestination.NavigationPageHandler.Toolbar, controller, appbarConfig); HasOptionsMenu = true; NavDestination.NavigationPageHandler.Toolbar.SetNavigationOnClickListener(BackClick); UpdateToolbar(); NavDestination.NavigationPageHandler.Toolbar .Title = NavDestination.Page.Title; if (Context.GetActivity() is AppCompatActivity aca) { aca.SupportActionBar.Title = NavDestination.Page.Title; // TODO MAUI put this elsewhere once we figure out how attached property handlers work bool showNavBar = false; if (NavDestination.Page is BindableObject bo) { showNavBar = NavigationPage.GetHasNavigationBar(bo); } var appBar = NavDestination.NavigationPageHandler.AppBar; if (!showNavBar) { if (appBar.LayoutParameters is CoordinatorLayout.LayoutParams cl) { cl.Height = 0; appBar.LayoutParameters = cl; } } else { if (appBar.LayoutParameters is CoordinatorLayout.LayoutParams cl) { cl.Height = ActionBarHeight(); appBar.LayoutParameters = cl; } } } int ActionBarHeight() { int attr = Resource.Attribute.actionBarSize; int actionBarHeight = (int)Context.GetThemeAttributePixels(Resource.Attribute.actionBarSize); //if (actionBarHeight <= 0) // return Device.Info.CurrentOrientation.IsPortrait() ? (int)Context.ToPixels(56) : (int)Context.ToPixels(48); //if (Context.GetActivity().Window.Attributes.Flags.HasFlag(WindowManagerFlags.TranslucentStatus) || Context.GetActivity().Window.Attributes.Flags.HasFlag(WindowManagerFlags.TranslucentNavigation)) //{ // if (_toolbar.PaddingTop == 0) // _toolbar.SetPadding(0, GetStatusBarHeight(), 0, 0); // return actionBarHeight + GetStatusBarHeight(); //} return(actionBarHeight); } }