xamarin.forms - Xamarin 表单:ImageCropper.Forms:如何删除多个弹出窗口?
问题描述
我正在使用ImageCropper.Forms裁剪从相机和图库中选择的图像。我有 3 个选项来更改个人资料图片;拍照,从图库上传并选择头像。因此,为了显示媒体选项,我使用DisplayActionSheet
如下:
var actionSheet = await DisplayActionSheet(null,"Cancel", null, "Take Photo", "Upload from Gallery", "Select Avatar");
if (actionSheet == "Take Photo")
{
OpenCamera();
}
else if(actionSheet == "Upload from Gallery")
{
Opengallery();
}
else if(actionSheet == "Select Avatar")
{
OpenAvatar();
}
下面添加了 OpenCamera() 和 Opengallery()。该代码还以弹出窗口的形式再次询问Take Photo
and选项。Photo Library
我不需要那个弹出窗口,有没有办法删除第二个弹出窗口ImageCropper.Forms
并直接加载相机或画廊?
我的代码:
async void OpenCamera()
{
try
{
await CrossMedia.Current.Initialize();
//I need to open camera only here, no need of a pop up again.
new ImageCropper()
{
PageTitle = "Test Title",
AspectRatioX = 1,
AspectRatioY = 1,
CropShape = ImageCropper.CropShapeType.Rectangle,
SelectSourceTitle = "Select source",
TakePhotoTitle = "Take Photo",
PhotoLibraryTitle = "Photo Library",
Success = (imageFile) =>
{
Device.BeginInvokeOnMainThread(() =>
{
profilephoto.Source = ImageSource.FromFile(imageFile);
});
}
}.Show(this);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("CameraException:>" + ex);
}
}
async void Opengallery()
{
try
{
await CrossMedia.Current.Initialize();
//I need to open gallery only here, no need of a pop up again.
new ImageCropper()
{
PageTitle = "Test Title",
AspectRatioX = 1,
AspectRatioY = 1,
CropShape = ImageCropper.CropShapeType.Rectangle,
SelectSourceTitle = "Select source",
TakePhotoTitle = "Take Photo",
PhotoLibraryTitle = "Photo Library",
Success = (imageFile) =>
{
Device.BeginInvokeOnMainThread(() =>
{
profilephoto.Source = ImageSource.FromFile(imageFile);
//var stream = ImageSource.FromFile(imageFile);
//imagefile = imageFile;
});
}
}.Show(this);
}
}
解决方案
默认警报是在包中定义的。所以我认为我们不能直接阻止它。如果你想设置它的文本,你只需要设置
SelectSourceTitle = " ",
TakePhotoTitle = "Take Photo",
PhotoLibraryTitle = "Upload from Gallery"
推荐阅读
- lambda - 在无服务器框架中将 lambdas 切换到 arm64
- reactjs - 如何使用 Django Rest Framework 和 Dj-rest-auth 在 React 中显示我的重置密码页面
- laravel - 如何在 laravel 的 formData 中获取部分标题、sub_section_title 和文件
- javascript - Telethon,全局变量停止 websocket
- pytorch - 模块“火炬”没有属性“linalg”
- android - 如何在 Android Studio Kotlin 中放大约束布局周围的边框
- node.js - 如何在 Heroku 上为 node.js 应用程序调试应用程序崩溃 [H10]
- lazy-loading - 通过谷歌标签管理器实现的延迟加载标签
- node.js - AWS 放大。我正在开发一个后端。但是要测试它,我必须每次都将代码推送到服务器
- kubernetes - 我如何等待一个钩子,这是一项在 helm 中完成的工作?