Xamarinでカスタムビューを設計できるチュートリアルはありますか?xamarinを使用してAndroidアプリのピンチズーム機能を構築したいですか?.
次のコードを試しましたが、機能しません。常にAndroid.view.InflateException: Binary XML file line #1: Error inflating class LA_Application.ZoomView
エラー
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using Android.Graphics;
namespace LA_Application
{
public class ZoomView : FrameLayout
{
private ScaleGestureDetector mScaleDetector;
private static float mScaleFactor = 1.0f;
public ZoomView (Context context) : base (context)
{
Initialize ();
}
public ZoomView (Context context, IAttributeSet attrs) : base (context,attrs)
{
Initialize ();
}
public ZoomView (Context context, IAttributeSet attrs, int defStyle) : base (context, attrs, defStyle)
{
Initialize ();
}
void Initialize ()
{
mScaleDetector = new ScaleGestureDetector(Context, new ScaleListener());
}
public override bool OnTouchEvent (MotionEvent e)
{
mScaleDetector.OnTouchEvent(e);
return true;
}
protected override void OnDraw(Android.Graphics.Canvas canvas)
{
base.OnDraw(canvas);
canvas.Save();
canvas.Scale(mScaleFactor, mScaleFactor);
canvas.Restore();
}
}
private class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener
{
public override bool OnScale(ScaleGestureDetector detector)
{
mScaleFactor *= detector.ScaleFactor;
// Don't let the object get too small or too large.
mScaleFactor = Math.Max(0.1f, Math.Min(mScaleFactor, 5.0f));
return true;
}
}
}
}
およびレイアウトファイル内
<?xml version="1.0" encoding="utf-8"?>
<LA_Application.ZoomView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:id="@+id/my_view" />
アクティビティコード
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.zoomview);
/*some code*/
}
このJava Androidチュートリアルをチェックして、セットアップに必要なものを理解することをお勧めします。
http://developer.Android.com/training/custom-views/index.html
カスタムビューの属性xmlファイルを作成する必要がある場合があります。
検討したいもう1つのアプローチは、ビューの代わりにフラグメントを使用することです。
http://docs.xamarin.com/guides/Android/platform_features/fragments/fragments_walkthrough
レイアウトファイルでは、クラスへのパスを小文字で記述する必要があります。私にとって、Core.Droid.MyImageView
はcore.droid.MyImageView
と書く必要がありました。
最初の文字だけを小さく書く必要があるのか、すべての文字を小さく書く必要があるのかはわかりませんが、lA_Application.ZoomView
またはla_application.ZoomView
のいずれかを試すことができます。それらの1つはおそらく機能します:)
Xamarin.Androidでカスタムビューを作成する方法のスケルトンは次のとおりです
http://xandroid4net.blogspot.com/2014/09/custom-view.html
次に、Emmanuel Touzeryの回答を受け取り、それをスケルトンに追加します