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

简介: 原文: Xamarin.Android中使用android:onClick="xxx"属性 在原生Android开发中,为一个View增加点击事件,有三种方式; 1、使用匿名对象 ((ImageButton) findViewById(R.
原文: Xamarin.Android中使用android:onClick="xxx"属性

在原生Android开发中,为一个View增加点击事件,有三种方式;

1、使用匿名对象

((ImageButton) findViewById(R.id.music_cover)) .setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) { }
});

我们知道,View.OnClickListener是一个接口,接口是不能直接实例化的,因此上述是使用匿名对象的原理来实现的

2、使用实现了View.OnClickListener的对象

这种方式通常是实例化一个实现了此接口的对象传递到view.setOnClickListener方法中,

先实现此接口:

class MyClickListener implements View.OnClickListener{
    @Override public void onClick(View v) {
    }
}
使用时
((ImageButton) findViewById(R.id.music_cover)).setOnClickListener(new MyClickListener());

3、使用 android:onClick属性

在view中设置属性android:onClick="onViewClick",引号中即指定了点击时调用的函数名称

在Activity中实现此命名方法

    public void onViewClick(View v){
        Toast.makeText(this,"onclick", Toast.LENGTH_SHORT).show();
    }

以上就是在java中增加view的点击事件的方法,但是具体的使用了解这些还不够,有几点需要注意的,最后总结;

标题是讲Xamarin.Android中如何使用android:onClick属性,所以这才是关键;也顺带提下如何在Xamarin中绑定view的点击事件

Xamarin.Android中也有三种方式实现,但是与原生有一定区别;

1、使用View的Click事件

view.Click += xxxx

因为在c#中没有匿名对象这个东西,但是相对提供了c#的事件订阅这种方式,但是这种使用方式,有很大的讲究,c#的事件订阅使用不好,可能会造成多次订阅,甚至在极端情况下造成内存泄露,这一块有很多内容要讲,后续会继续推出讲解;

2、此方法类似java的第二种方法

3、与Java的第三种方法一致,但是在Xamarin中使用,必须引入Mono.Android.Export这个动态库

并且在相应方法上标注 [Java.Interop.Export]属性,示例如下

    [Java.Interop.Export]
    public void OnView_Click(View v) {
    }

最后再说下使用第三种方法需要注意的两点:

1、方法必须是对外可见的,什么意思呢,就是这个方法外层是可以直接访问的,原因很简单,xml也是用于解析的,这个属性不是

那么神圣,也是通过解析处理,然后绑定这个方法,因此这个方法必须对外可见,简单点一句话:public修饰,万事大吉

2、使用这个属性的view必须是可点击的,比如Button,ImageButton等这些本身就是可点击的,那TextView可以使用不呢?肯定可以,但是一定要

设置另外一个属性,android:clickable="true".

大体到这就结束了,对于这三种方式的优缺点及使用场景,有时间给大家说下我自己的看法。新手帖,高手勿喷!

目录
相关文章
|
4月前
|
XML Java Android开发
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
40 1
|
8月前
|
Android开发 UED
Android focusable属性的作用
Android focusable属性的作用
153 0
|
8月前
|
XML Android开发 数据格式
Android中利用shape属性自定义设置Button按钮
Android中利用shape属性自定义设置Button按钮
134 0
|
4月前
|
传感器 监控 物联网
Android Ble蓝牙App(三)特性和属性
Android Ble蓝牙App(三)特性和属性
|
6月前
|
开发工具 Android开发 iOS开发
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
使用vs2019学习xamarin时,创建新程序。使用模拟器真机等测试都报错如下图错误: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231030-de8ce5fd.png?x-cos-security-token=r4KyZDEowPT0kGTL0LqE8EnwfN1Nzexadb05dcffed3939ff8d7591c528c01706nvpGSE93QwHpZM8NwhJNTZctNRQa0l3KDhEnqj8P7d8t
63 0
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
|
8月前
|
Android开发
Android onActivityResult()的属性与用法
Android onActivityResult()的属性与用法
94 1
|
8月前
|
Android开发
Android ImageView scaleType 属性详细介绍与使用
Android ImageView scaleType 属性详细介绍与使用
91 0
|
8月前
|
XML Android开发 数据格式
Android Button 属性介绍与使用
Android Button 属性介绍与使用
229 0
|
11月前
|
XML Java 开发工具
Android常见XML属性解析
Android常见XML属性解析
173 0
|
11月前
|
XML 传感器 算法
Android 布局和Activity属性大全
android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料。