[英]x,y coordinates from xamarin.forms image in android
在我的xamarin.forms項目中,我得到了一張圖片。 該圖像具有一個如下所示的渲染器:
public class CustomImage : Image
{
public event EventHandler<PointEventArgs> TapEvent;
public void OnTapEvent(int x, int y)
{
TapEvent?.Invoke(this, new PointEventArgs(x, y));
}
}
Android Renderer看起來像這樣:
public class ImageRendererAndroid : ImageRenderer
{
private ImageView nativeElement;
private CustomImage formsElement;
protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control != null)
{
Control.Clickable = true;
Control.SetOnTouchListener(ImageTouchListener.Instance.Value);
Control.SetTag(Control.Id, new JavaObjectWrapper<CustomImage> { Obj = Element as CustomImage });
}
}
}
}
當我調用Control.setTag方法時,出現以下錯誤:
Java.Lang.IllegalArgumentException: The key must be an application-specific resource id.
Control.Id為157
那么,為什么我會收到此錯誤,我該如何解決?
謝謝
根據SetTag文檔,您不能將任何任意值設置為鍵,但應定義應用程序資源ID
指定的密鑰應該是在應用程序資源中聲明的ID,以確保它是唯一的(請參閱ID資源類型)。 標識為屬於Android框架或未與任何程序包相關聯的鍵將導致引發IllegalArgumentException。
鍵與您的控件無關,而是指向控件中的標簽
參數
key :識別標簽的鑰匙
tag :用於標記視圖的對象
因此,傳遞控件ID似乎並不是一個很好的選擇。
請參閱有關如何創建資源的android參考 。
用XML定義的唯一資源ID。 [...]
res/values/filename.xml
。 文件名是任意的。
在此文件中,您可以創建一個ID
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources>
屬性type="id"
對於ID資源是必需的。 可以將id_name
更改為您喜歡的任何名稱,然后在您的應用程序中引用
Resource.Id.id_name
( Resource
類應位於您的android應用的主命名空間中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.