在原生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".
大致到这就结束了,对于这三种方式的优缺点及使用场景,有时间给你们说下我本身的见解。新手帖,高手勿喷!