From 23614ca8c6cc78cb2b1df91977fd539a9fa159df Mon Sep 17 00:00:00 2001 From: Paul DiPietro Date: Wed, 3 Aug 2016 03:50:31 -0500 Subject: [Android] Fix ListView contextual actions not closing in AppCompat's NavigationPage/TabbedPage (#272) * [Android] Fix ListView contextual actions not closing upon navigation in AppCompat The Platform type in the ListViewAdapter was being treated as the non-AppCompat type, and the NavAnimationInProgress value was not being set as necessary in the NavigationPageRenderer. * [Android] Add fix for TabbedPage swipes not closing contextual actions Similar fix where swiping to another tab with the context menu open would not close it. Relies on the prior commit. --- Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs | 6 +++++- Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'Xamarin.Forms.Platform.Android/AppCompat') diff --git a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs index 2bc182da..f591f057 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs @@ -573,6 +573,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat Current = view; + ((Platform)Element.Platform).NavAnimationInProgress = true; FragmentTransaction transaction = fm.BeginTransaction(); if (animated) @@ -606,6 +607,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat transaction.Show(toShow); else transaction.Add(Id, toShow); + + ((Platform)Element.Platform).NavAnimationInProgress = false; } else { @@ -614,13 +617,14 @@ namespace Xamarin.Forms.Platform.Android.AppCompat transaction.Hide(currentToHide); transaction.Add(Id, fragment); fragments.Add(fragment); + ((Platform)Element.Platform).NavAnimationInProgress = false; } } transaction.Commit(); // The fragment transitions don't really SUPPORT telling you when they end // There are some hacks you can do, but they actually are worse than just doing this: - + if (animated) { if (!removed) diff --git a/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs index 243e5c14..3c952a9a 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs @@ -264,7 +264,9 @@ namespace Xamarin.Forms.Platform.Android.AppCompat void ScrollToCurrentPage() { + ((Platform)Element.Platform).NavAnimationInProgress = true; _viewPager.SetCurrentItem(Element.Children.IndexOf(Element.CurrentPage), UseAnimations); + ((Platform)Element.Platform).NavAnimationInProgress = false; } void UpdateIgnoreContainerAreas() -- cgit v1.2.3