簡體   English   中英

來自Android中xamarin.forms圖像的x,y坐標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM