Beispiel #1
0
        protected virtual void ShowTabLayout(
            Type view,
            MvxTabLayoutPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            ShowViewPagerFragment(view, attribute, request);

            var viewPager = CurrentActivity.FindViewById <ViewPager>(attribute.ViewPagerResourceId);
            var tabLayout = CurrentActivity.FindViewById <TabLayout>(attribute.TabLayoutResourceId);

            if (viewPager != null && tabLayout != null)
            {
                tabLayout.SetupWithViewPager(viewPager);
            }
            else
            {
                throw new MvxException("ViewPager or TabLayout not found");
            }
        }
Beispiel #2
0
        protected virtual async Task <bool> ShowTabLayout(
            Type view,
            MvxTabLayoutPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            ValidateArguments(view, attribute, request);

            var showViewPagerFragment = await ShowViewPagerFragment(view, attribute, request).ConfigureAwait(true);

            if (!showViewPagerFragment)
            {
                return(false);
            }

            ViewPager?viewPager = null;
            TabLayout?tabLayout = null;

            // check for a ViewPager inside a Fragment
            if (attribute.FragmentHostViewType != null)
            {
                var fragment = GetFragmentByViewType(attribute.FragmentHostViewType);

                viewPager = fragment?.View.FindViewById <ViewPager>(attribute.ViewPagerResourceId);
                tabLayout = fragment?.View.FindViewById <TabLayout>(attribute.TabLayoutResourceId);
            }

            // check for a ViewPager inside an Activity
            if (CurrentActivity.IsActivityAlive() && attribute?.ActivityHostViewModelType != null)
            {
                viewPager = CurrentActivity?.FindViewById <ViewPager>(attribute.ViewPagerResourceId);
                tabLayout = CurrentActivity?.FindViewById <TabLayout>(attribute.TabLayoutResourceId);
            }

            if (viewPager == null || tabLayout == null)
            {
                throw new MvxException("ViewPager or TabLayout not found");
            }

            tabLayout.SetupWithViewPager(viewPager);
            return(true);
        }
Beispiel #3
0
        protected virtual async Task <bool> ShowTabLayout(
            Type view,
            MvxTabLayoutPresentationAttribute attribute,
            MvxViewModelRequest request)
        {
            if (!await ShowViewPagerFragment(view, attribute, request))
            {
                return(false);
            }

            ViewPager viewPager = null;
            TabLayout tabLayout = null;

            // check for a ViewPager inside a Fragment
            if (attribute.FragmentHostViewType != null)
            {
                var fragment = GetFragmentByViewType(attribute.FragmentHostViewType);

                viewPager = fragment.View.FindViewById <ViewPager>(attribute.ViewPagerResourceId);
                tabLayout = fragment.View.FindViewById <TabLayout>(attribute.TabLayoutResourceId);
            }

            // check for a ViewPager inside an Activity
            if (attribute.ActivityHostViewModelType != null)
            {
                viewPager = CurrentActivity.FindViewById <ViewPager>(attribute.ViewPagerResourceId);
                tabLayout = CurrentActivity.FindViewById <TabLayout>(attribute.TabLayoutResourceId);
            }

            if (viewPager != null && tabLayout != null)
            {
                tabLayout.SetupWithViewPager(viewPager);
                return(true);
            }

            throw new MvxException("ViewPager or TabLayout not found");
        }