在原生Android開發中,爲一個View增長點擊事件,有三種方式;java
一、使用匿名對象android
((ImageButton) findViewById(R.id.music_cover)) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });
咱們知道,View.OnClickListener是一個接口,接口是不能直接實例化的,所以上述是使用匿名對象的原理來實現的;c#
二、使用實現了View.OnClickListener的對象ide
這種方式一般是實例化一個實現了此接口的對象傳遞到view.setOnClickListener方法中,函數
先實現此接口:this
class MyClickListener implements View.OnClickListener{ @Override public void onClick(View v) { } }使用時
((ImageButton) findViewById(R.id.music_cover)).setOnClickListener(new MyClickListener());
三、使用 android:onClick屬性spa
在view中設置屬性android:onClick="onViewClick",引號中即指定了點擊時調用的函數名稱.net
在Activity中實現此命名方法code
public void onViewClick(View v){ Toast.makeText(this,"onclick", Toast.LENGTH_SHORT).show(); }
以上就是在java中增長view的點擊事件的方法,可是具體的使用瞭解這些還不夠,有幾點須要注意的,最後總結;xml
標題是講Xamarin.Android中如何使用android:onClick屬性,因此這纔是關鍵;也順帶提下如何在Xamarin中綁定view的點擊事件
Xamarin.Android中也有三種方式實現,可是與原生有必定區別;
一、使用View的Click事件
view.Click += xxxx
由於在c#中沒有匿名對象這個東西,可是相對提供了c#的事件訂閱這種方式,可是這種使用方式,有很大的講究,c#的事件訂閱使用很差,可能會形成屢次訂閱,甚至在極端狀況下形成內存泄露,這一塊有不少內容要講,後續會繼續推出講解;
二、此方法相似java的第二種方法
三、與Java的第三種方法一致,可是在Xamarin中使用,必須引入Mono.Android.Export這個動態庫
而且在相應方法上標註 [Java.Interop.Export]屬性,示例以下
[Java.Interop.Export] public void OnView_Click(View v) { }
最後再說下使用第三種方法須要注意的兩點:
一、方法必須是對外可見的,什麼意思呢,就是這個方法外層是能夠直接訪問的,緣由很簡單,xml也是用於解析的,這個屬性不是
那麼神聖,也是經過解析處理,而後綁定這個方法,所以這個方法必須對外可見,簡單點一句話:public修飾,萬事大吉
二、使用這個屬性的view必須是可點擊的,好比Button,ImageButton等這些自己就是可點擊的,那TextView可使用不呢?確定能夠,可是必定要
設置另一個屬性,android:clickable="true".
大致到這就結束了,對於這三種方式的優缺點及使用場景,有時間給你們說下我本身的見解。新手帖,高手勿噴!