xamarin - Xamarin 使用拖放区拖放
问题描述
我正在尝试实现拖放以创建一个语法练习,在该练习中,您必须用正确的单词完成句子,将正确的答案拖到正确的位置(如下图所示)。
我试图通过使用自定义渲染器来实现这一点,创建一些扩展的原生视图来覆盖实现拖放的方法(如OnTouchEvent
Android 和iOS 的TouchesBegan
, TouchesMoved
) 。TouchesEnded
在这两个平台中,我都可以拖动自定义本机视图,但只有在 iOS 中,我才能将它们拖放到我想要的特定目标视图中。在 Android 中,它似乎与 Xamarin Forms 视图坐标和 android 自定义渲染器中使用的本机 Android 坐标发生冲突。即使我尝试“调整”它们(通过手动插入我希望将视图放入的坐标),检查if(destinationRect.Contains(myTouchX, myTouchY)
似乎也无法正常工作。
此处的 Git 存储库示例:Git 示例
有谁知道如何解决这个问题?或者有谁知道如何以任何其他最简单的方式实现拖放(使用适当的拖放区进行检查)?
解决方案
在 Android 中,它提供了View.StartDrag(ClipData, View+DragShadowBuilder, Object, Int32) Method
启动拖放操作的方法。
您可以查看 MS 文档。
View.StartDrag(ClipData, View+DragShadowBuilder, Object, Int32) Method
:
https ://docs.microsoft.com/en-us/dotnet/api/android.views.view.startdrag?view=xamarin-android-sdk-9
View.StartDragAndDrop(ClipData, View+DragShadowBuilder, Object, Int32) Method
:
https ://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
推荐阅读
- java - Java 泛型 - 如何访问子类参数
- amazon-web-services - 在 Apache Airflow DAG 中使用 AWS SES 失败时发送电子邮件
- sql - 层次查询
- apache - 在 xampp Apache Ubuntu 上设置 Certbot
- javascript - 如何通过 Node.js API 将客户端 Javascript 数组和 POST 导入 MongoDB 数据库?
- c++ - 函数参数:inteterminately sequenced or unsequenced?
- pentaho - 如何从一台服务器上的水壶作业在另一台服务器上运行 shell 脚本?
- php - mysqli_stmt_bind_result 的 SQLSRV 等效项
- android - Google Play 结算安全:如何证明购买令牌属于没有 developerPayload 字段的特定用户?
- django - 在 Django 中,如何从 POST 表单中获取二进制字段数据