gpt4 book ai didi

android - 如何在 xamarin 中构建自定义 View

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:01 24 4
gpt4 key购买 nike

是否有任何教程可以让我在 xamarin 中设计自定义 View ?我想使用 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" />

Activity 代码

protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);

SetContentView(Resource.Layout.zoomview);

/*some code*/
}

最佳答案

在布局文件中,您需要用小写字母写下您的类的路径。对我来说,Core.Droid.MyImageView 必须写成 core.droid.MyImageView

我不确定是否只有第一个字母或所有字母必须小写,但您可以尝试 lA_Application.ZoomViewla_application.ZoomView。其中之一很可能会起作用:)

关于android - 如何在 xamarin 中构建自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com