Comment construire des vues personnalisées dans xamarin
Est-il un tutoriel qui va me permettre de concevoir des vues personnalisées dans xamarin?Je veux construire une pincée d'une fonction de zoom pour mon application android à l'aide de xamarin.
J'ai essayé le code suivant,mais sa ne fonctionne pas,je suis toujours android.view.InflateException: Binary XML file line #1: Error inflating class LA_Application.ZoomView
erreur
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;
}
}
}
}
et dans le fichier de mise en page
<?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" />
code d'activité
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.zoomview);
/*some code*/
}
OriginalL'auteur Cris | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
Je suggère de vérifier ce Java Android tutoriel pour avoir une idée de ce dont vous avez besoin pour l'installation:
http://developer.android.com/training/custom-views/index.html
Vous devrez peut-être créer un des attributs de fichier xml pour votre affichage personnalisé.
Une autre approche, vous souhaitez mai à envisager est d'utiliser un fragment au lieu d'un point de vue:
http://docs.xamarin.com/guides/android/platform_features/fragments/fragments_walkthrough
OriginalL'auteur Ben Bishop
Dans le fichier de mise en page, vous devez écrire le chemin d'accès à votre classe et en petits caractères.
Pour moi
Core.Droid.MyImageView
a dû être écrit commecore.droid.MyImageView
.Je ne suis pas sûr si seule la première lettre ou la totalité de la lettre doit être écrite dans les petites, mais vous pouvez essayer soit
lA_Application.ZoomView
oula_application.ZoomView
. L'un d'entre eux sera très probablement le travail 🙂OriginalL'auteur Jens
Voici le squelette de la façon de créer une vue personnalisée dans xamarin.android
http://xandroid4net.blogspot.com/2014/09/custom-view.html
Puis prendre Emmanuel Touzery réponse et l'ajouter à la squelette
android pincée de zoom
OriginalL'auteur honeyws