我可以将一个axml嵌入xaml(Xamarin)吗?

时间:2017-02-27 15:35:06

标签: c# android xaml xamarin

我是Xamarin的新手,我正在设置Xamarin Forms应用,并在创建意图并为其启动活动后触发设备的相机。

Xamarin的配方看起来很像,但我使用Forms.Context作为Activity对象(为了将所有挂钩放在我的内容页面中,而不是将所有内容放在MainActivity.cs中,如同在Xamarin的食谱中。)

它有效,相机打开。

Intent intent = new Intent(MediaStore.ActionImageCapture);
_file = new File(_dir, String.Format("myPhoto_{0}.jpg", Guid.NewGuid()));
intent.PutExtra(MediaStore.ExtraOutput, Uri.FromFile(_file));
Forms.Context.StartActivity(intent, Bundle.Empty);

事情是,我想要将照片刚刚放入ImageView的配方功能相同。

recipe's codeMainActivity.cs内生成用户界面(以及其他所有内容)。我想在XAML文件中单独声明视图。

据我了解,我需要能够将axml安卓资源文件嵌入到xaml中,因为MainActivity中的代码已经安装了Android,并且Android可以引用视图/控件仅由其资源ID(在view/ui container文件夹下创建axml作为Resources/layout文件后自动生成。

如何完成最后一步以使“拍照”样本正常工作 - 在MainActivity之外编码?

截图

以下是Xamarin配方如何将图片放入图像查看器中。

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您正在使用Xamarin Forms并希望拍摄照片然后使用Image进行显示 - 我建议您使用https://github.com/jamesmontemagno/MediaPlugin允许用户拍照(或选择一张照片)从电话)。结果可以设置为ImageSource的{​​{1}}。

关于原始问题,您是否可以将本机android元素嵌入到xamarin表单中 - 您可以查看https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/add-platform-controls/

答案 1 :(得分:1)

我认为解决这个问题的正确方法是使用DependencyService来访问Android原生功能,具体来说就是调用本机拍照并保存图片的方法。如果您只想拍照并使用Image显示,可以使用DependencyService实现此平台特定功能并在xaml中设计布局,无需在XAML中嵌入axml。

如果要在Xaml中嵌入相机预览,建议的方法是使用Custom Renderers使用目标平台的本机控件渲染界面。这意味着,您不需要在Android项目中创建axml来显示摄像头预览,您可以在PCL中创建自定义渲染器(控件/视图),并在Android项目中实现此控件。官方docdemo指导我们实施视图以显示相机预览。