前提:这个答案不能回答我的问题,在这里我问如何解决这个"冲突问题"。
我注意到Xamarin Forms中视图的坐标与Android中相同视图的坐标不同,类似于view.X
=150(在Xamarin Form中(对应于view.GetX()
=900(在Xamarin Android中(。这给我带来了很多问题,因为我试图使用android自定义渲染器来实现拖放,在这个渲染器中,我必须知道拖放区域的位置(使用myDestinationRect.Contains(myTouchX,myTouchY)
(,但由于我在Forms中的位置与安卓自定义渲染器中所需的位置不同,这对我来说是不可能的。有没有一种方法可以将表单坐标"转换"为android坐标?或者还有其他解决方案吗?
PS:在iOS中,一切都很好,似乎Forms和iOS使用相同的坐标系统。
尝试先获取设备Density
,然后获取*density
以转换为android坐标。
var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
var density = mainDisplayInfo.Density;
int XForms = view.X;
int XAndroid = XForms*density; //convert to android coordinates.