diff options
author | adrianknight89 <adrianknight89@outlook.com> | 2016-10-31 06:41:46 -0500 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-10-31 11:41:46 +0000 |
commit | c9edd1a382298d4de622b186d6ef3af69d5f55ac (patch) | |
tree | 15ca877359d1a27cd40d740ac1c9b72f035825d5 /Xamarin.Forms.Platform.Android/Renderers | |
parent | ceb09daf2d09c0ad8b2e4029947f66748ad11e9e (diff) | |
download | xamarin-forms-c9edd1a382298d4de622b186d6ef3af69d5f55ac.tar.gz xamarin-forms-c9edd1a382298d4de622b186d6ef3af69d5f55ac.tar.bz2 xamarin-forms-c9edd1a382298d4de622b186d6ef3af69d5f55ac.zip |
[Android] Forward ScrollView touch events to custom renderers (#472)
* Forward touch events
* remove double cast
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Renderers')
-rw-r--r-- | Xamarin.Forms.Platform.Android/Renderers/AHorizontalScrollView.cs | 9 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs | 8 |
2 files changed, 16 insertions, 1 deletions
diff --git a/Xamarin.Forms.Platform.Android/Renderers/AHorizontalScrollView.cs b/Xamarin.Forms.Platform.Android/Renderers/AHorizontalScrollView.cs index 6a64a35b..4d192dc7 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/AHorizontalScrollView.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/AHorizontalScrollView.cs @@ -31,6 +31,14 @@ namespace Xamarin.Forms.Platform.Android public override bool OnTouchEvent(MotionEvent ev) { + // If the touch is caught by the horizontal scrollview, forward it to the parent so custom renderers can be notified of the touch. + var verticalScrollViewerRenderer = Parent as ScrollViewRenderer; + if (verticalScrollViewerRenderer != null) + { + verticalScrollViewerRenderer.ShouldSkipOnTouch = true; + verticalScrollViewerRenderer.OnTouchEvent(ev); + } + // The nested ScrollViews will allow us to scroll EITHER vertically OR horizontally in a single gesture. // This will allow us to also scroll diagonally. // We'll fall through to the base event so we still get the fling from the ScrollViews. @@ -49,6 +57,7 @@ namespace Xamarin.Forms.Platform.Android ScrollBy((int)dX, 0); } } + return base.OnTouchEvent(ev); } diff --git a/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs index acad08c3..2f66d8e8 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs @@ -14,7 +14,7 @@ namespace Xamarin.Forms.Platform.Android ScrollViewContainer _container; HorizontalScrollView _hScrollView; bool _isAttached; - + internal bool ShouldSkipOnTouch; bool _isBidirectional; ScrollView _view; @@ -118,6 +118,12 @@ namespace Xamarin.Forms.Platform.Android public override bool OnTouchEvent(MotionEvent ev) { + if (ShouldSkipOnTouch) + { + ShouldSkipOnTouch = false; + return false; + } + // The nested ScrollViews will allow us to scroll EITHER vertically OR horizontally in a single gesture. // This will allow us to also scroll diagonally. // We'll fall through to the base event so we still get the fling from the ScrollViews. |