首页 > 解决方案 > Xamarin 使用拖放区拖放

问题描述

我正在尝试实现拖放以创建一个语法练习,在该练习中,您必须用正确的单词完成句子,将正确的答案拖到正确的位置(如下图所示)。 在此处输入图像描述

我试图通过使用自定义渲染器来实现这一点,创建一些扩展的原生视图来覆盖实现拖放的方法(如OnTouchEventAndroid 和iOS 的TouchesBegan, TouchesMoved) 。TouchesEnded在这两个平台中,我都可以拖动自定义本机视图,但只有在 iOS 中,我才能将它们拖放到我想要的特定目标视图中。在 Android 中,它似乎与 Xamarin Forms 视图坐标和 android 自定义渲染器中使用的本机 Android 坐标发生冲突。即使我尝试“调整”它们(通过手动插入我希望将视图放入的坐标),检查if(destinationRect.Contains(myTouchX, myTouchY)似乎也无法正常工作。

此处的 Git 存储库示例:Git 示例

有谁知道如何解决这个问题?或者有谁知道如何以任何其他最简单的方式实现拖放(使用适当的拖放区进行检查)?

标签: xamarinxamarin.formsdrag-and-dropcoordinatescustom-renderer

解决方案


在 Android 中,它提供了View.StartDrag(ClipData, View+DragShadowBuilder, Object, Int32) Method启动拖放操作的方法。

您可以查看 MS 文档。

View.StartDrag(ClipData, View+DragShadowBuilder, Object, Int32) Methodhttps ://docs.microsoft.com/en-us/dotnet/api/android.views.view.startdrag?view=xamarin-android-sdk-9

View.StartDragAndDrop(ClipData, View+DragShadowBuilder, Object, Int32) Methodhttps ://docs.microsoft.com/en-us/dotnet/api/android.views.view.startdraganddrop?view=xamarin-android-sdk-9

根据我的搜索,这个博客将对这种方法有所帮助。 https://pumpingco.de/blog/adding-drag-and-drop-to-your-android-application-with-xamarin/

您可以从 GitHub 下载源文件。 https://github.com/Pumpingcode/Xamarin-DragAndDropDemo

在此处输入图像描述


推荐阅读