예제 #1
0
            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);
                    }
                }
            }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
            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);
                    }
                }
            }
예제 #5
0
            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);
            }
예제 #6
0
        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);
            }
        }