Is there any tutorial which will enable me to design custom views in xamarin?I want to build pinch zoom functionality for my android app using xamarin.
I have tried following code,but its not working,I am always getting android.view.InflateException: Binary XML file line #1: Error inflating class LA_Application.ZoomView
error
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;
}
}
}
}
and in layout file
<?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" />
activity code
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.zoomview);
/*some code*/
}
The visual elements in Xamarin. Forms fall into two separate categories: controls and arrangers. Both are considered visual elements, share a common base class (View), and are collectively known as Views.
Custom renderers for a given type can be added to one application project to customize the control in one place while allowing the default behavior on other platforms; or different custom renderers can be added to each application project to create a different look and feel on iOS, Android, and the Universal Windows ...
A bindable property can be created by declaring a public static readonly property of type BindableProperty . The bindable property should be set to the returned value of one of the BindableProperty. Create method overloads.
In the layout file you need to write the path to your class in small letters.
For me Core.Droid.MyImageView
had to be written as core.droid.MyImageView
.
I am not sure if only the first letter or all letter have to be written in small, but you can try either lA_Application.ZoomView
or la_application.ZoomView
. One of them will very likely work :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With