2016-12-07 21:53:16 +03:00
|
|
|
|
using System;
|
|
|
|
|
using Xamarin.Forms.CustomAttributes;
|
2016-12-06 15:07:29 +03:00
|
|
|
|
using Xamarin.Forms.Internals;
|
|
|
|
|
|
|
|
|
|
#if UITEST
|
|
|
|
|
using Xamarin.UITest;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
#endif
|
|
|
|
|
|
2016-12-07 03:16:35 +03:00
|
|
|
|
namespace Xamarin.Forms.Controls.Issues
|
2016-12-06 15:07:29 +03:00
|
|
|
|
{
|
|
|
|
|
[Preserve(AllMembers = true)]
|
|
|
|
|
[Issue(IssueTracker.Bugzilla, 41415, "ScrollX and ScrollY values are not consistent with iOS", PlatformAffected.Android)]
|
|
|
|
|
public class Bugzilla41415 : TestContentPage
|
|
|
|
|
{
|
|
|
|
|
const string ButtonText = "Click Me";
|
|
|
|
|
float _x, _y;
|
|
|
|
|
bool _didXChange, _didYChange;
|
|
|
|
|
|
|
|
|
|
protected override void Init()
|
|
|
|
|
{
|
|
|
|
|
var grid = new Grid
|
|
|
|
|
{
|
|
|
|
|
BackgroundColor = Color.Yellow,
|
|
|
|
|
WidthRequest = 1000,
|
|
|
|
|
HeightRequest = 1000,
|
|
|
|
|
Children =
|
|
|
|
|
{
|
|
|
|
|
new BoxView
|
|
|
|
|
{
|
|
|
|
|
WidthRequest = 200,
|
|
|
|
|
HeightRequest = 200,
|
|
|
|
|
BackgroundColor = Color.Red,
|
|
|
|
|
HorizontalOptions = LayoutOptions.Center,
|
|
|
|
|
VerticalOptions = LayoutOptions.Center
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var labelx = new Label();
|
|
|
|
|
var labely = new Label();
|
|
|
|
|
var labelz = new Label();
|
|
|
|
|
var labela = new Label();
|
|
|
|
|
|
|
|
|
|
var scrollView = new ScrollView
|
|
|
|
|
{
|
|
|
|
|
Orientation = ScrollOrientation.Both,
|
|
|
|
|
HorizontalOptions = LayoutOptions.FillAndExpand,
|
|
|
|
|
VerticalOptions = LayoutOptions.FillAndExpand
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
scrollView.Content = grid;
|
|
|
|
|
scrollView.Scrolled += (sender, args) =>
|
|
|
|
|
{
|
2016-12-07 21:53:16 +03:00
|
|
|
|
labelx.Text = $"x: {(int)Math.Round(args.ScrollX)}";
|
|
|
|
|
labely.Text = $"y: {(int)Math.Round(args.ScrollY)}";
|
2016-12-06 15:07:29 +03:00
|
|
|
|
|
|
|
|
|
// first and second taps
|
|
|
|
|
if (_x == 0)
|
|
|
|
|
{
|
|
|
|
|
if (args.ScrollX != 0 && args.ScrollX != 100)
|
|
|
|
|
_didXChange = true;
|
|
|
|
|
if (args.ScrollY != 0 && args.ScrollY != 100)
|
|
|
|
|
_didYChange = true;
|
|
|
|
|
}
|
|
|
|
|
else if (_x == 100)
|
|
|
|
|
{
|
|
|
|
|
if (args.ScrollX != _x && args.ScrollX != _x + 100)
|
|
|
|
|
_didXChange = true;
|
|
|
|
|
if (args.ScrollY != 100)
|
|
|
|
|
_didYChange = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
labelz.Text = "z: " + _didXChange.ToString();
|
|
|
|
|
labela.Text = "a: " + _didYChange.ToString();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var button = new Button { Text = ButtonText };
|
|
|
|
|
button.Clicked += async (sender, e) =>
|
|
|
|
|
{
|
|
|
|
|
// reset
|
|
|
|
|
labelx.Text = null;
|
|
|
|
|
labely.Text = null;
|
|
|
|
|
labelz.Text = null;
|
|
|
|
|
labela.Text = null;
|
|
|
|
|
_didXChange = false;
|
|
|
|
|
_didYChange = false;
|
|
|
|
|
|
|
|
|
|
await scrollView.ScrollToAsync(_x + 100, _y + 100, true);
|
|
|
|
|
_x = 100;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Content = new StackLayout { Children = { button, labelx, labely, labelz, labela, scrollView } };
|
|
|
|
|
}
|
|
|
|
|
|
2016-12-07 15:42:27 +03:00
|
|
|
|
#if UITEST && __ANDROID__
|
2016-12-06 15:07:29 +03:00
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Bugzilla41415Test()
|
|
|
|
|
{
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked(ButtonText));
|
|
|
|
|
RunningApp.Tap(q => q.Marked(ButtonText));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("x: 100"));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("y: 100"));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("z: True"));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("a: True"));
|
|
|
|
|
RunningApp.Tap(q => q.Marked(ButtonText));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("x: 200"));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("y: 100"));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("z: True"));
|
|
|
|
|
RunningApp.WaitForElement(q => q.Marked("a: False"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|