Xamarin.Android中使用android:onClick="xxx"屬性

原文: Xamarin.Android中使用android:onClick="xxx"屬性

在原生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".

大致到這就結束了,對於這三種方式的優缺點及使用場景,有時間給你們說下我本身的見解。新手帖,高手勿噴!

相關文章
相關標籤/搜索