2016-04-12 16 views
0

良い日。私はこれを使用しようとしますhttps://developer.xamarin.com/recipes/android/other_ux/camera_intent/take_a_picture_and_save_using_camera_app/、しかし私はいくつかの問題があります。Xamarin AXMLのトラブル

XAML(下記)をAXMLに実装しようとしています(以下も)。しかし、私はCameraApp.Droid.MainActivityのOnCreate()メソッドのこの実装では例外があります。

私はそれをどのように実装すべきか分かりませんので、アンドロイドアプリでのAXMLの使い方を理解してください。私はAXMLに以下のコード(XAML)のようなものを実装する必要が

Project looks like this

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:cameraApp="clr-namespace:CameraApp;assembly=CameraApp.Droid" 
      x:Class="CameraApp.CameraPage"> 
    <Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"></RowDefinition> 
     <RowDefinition Height="100"></RowDefinition> 
    </Grid.RowDefinitions> 
    <cameraApp:CameraButton Grid.Row="0"/> 
    <ScrollView Grid.Row="1"> 
     <Label Text="gallery" /> 
    </ScrollView> 
    </Grid> 
</ContentPage> 

私はAXML(CameraApp.DroidでMain.axml)にそれを書き換えるしよう

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <CameraButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="5" /> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/gallery" 
     android:layout_weight="2" /> 
</LinearLayout> 

CameraApp.App.cs:

using Xamarin.Forms; 

namespace CameraApp 
{ 
    public class App : Application 
    { 
     public App() 
     { 
      MainPage = new CameraPage(); 
     } 
    } 
} 

CameraApp.CameraButton.cs:

using Xamarin.Forms; 

namespace CameraApp 
{ 
    public class CameraButton : Button { } 
} 

CameraButtonRenderer.cs:

using CameraApp; 
using CameraApp.Droid; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.Android; 

[assembly: ExportRenderer(typeof(CameraButton), typeof(CameraButtonRenderer))] 
namespace CameraApp.Droid 
{ 
    public class CameraButtonRenderer : ButtonRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Button> e) 
     { 
      base.OnElementChanged(e); 
      if (Control != null) 
      { 
       var nativeButton = Control; 
       nativeButton.Click += delegate 
       { 
        SetBackgroundColor(Android.Graphics.Color.LightGreen); 
       }; 
       nativeButton.LongClick += delegate 
       { 
        SetBackgroundColor(Android.Graphics.Color.Red); 
       }; 
      } 
     } 
    } 
} 

CameraApp.Droid.MainActivity.cs:

using Android.App; 
using Android.Content.PM; 
using Android.OS; 

namespace CameraApp.Droid 
{ 
    [Activity (Label = "CameraApp", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 
    public class MainActivity : Xamarin.Forms.Platform.Android.FormsApplicationActivity 
    { 
     protected override void OnCreate (Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      SetContentView(Resource.Layout.Main); 
     } 
    } 
} 
+0

次のような例に従うことができます: https://github.com/XLabs/Xamarin-Forms-Labs/wiki/Camera –

+0

@JonDouglasおかげで – Evgeniy175

+0

スローされた例外を記載してください。 – matthewrdev

答えて

0

Xamarin Media pluginは、あなたがカメラにアクセスすることができます独自のプラットフォームレンダラを記述することなく、Formsプロジェクトから直接アクセスできます。

+0

ありがとう、それは動作します!しかし、私はXAMLのボタンがある場合は、開いている内蔵カメラなしで指定されたフォルダに直接写真を撮ることが可能ですか? – Evgeniy175

関連する問題