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

时间:2021-07-08 23:55:58

原文: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".

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

Xamarin.Android中使用android:onClick="xxx"属性的更多相关文章

  1. Android中TextView和EditView常用属性设置

    Android中TextView和EditView常用属性设置 点击跳转

  2. 关于那些Android中不常用的设置属性

    很多在manifest中的属性我们经常遗忘了它们,或者经常看到但又不是很明白它的作用.那么在这里我就拿了一些属性简单的解释一下,防止以后碰到却不知道其中的意思.不是很全,以后会断断续续的补充吧 一.a ...

  3. Android笔记(六十六) android中的动画——XML文件定义属性动画

    除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在 ...

  4. Android中常用控件及属性

    在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...

  5. android 中targetSdkVersion和与target属性的区别

    AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别      在AndroidMenifest.xml中,常常会有 ...

  6. Android中View自己定义XML属性具体解释以及R.attr与R.styleable的差别

    为View加入自己定义XML属性 Android中的各种Widget都提供了非常多XML属性,我们能够利用这些XML属性在layout文件里为Widget的属性赋值. 例如以下所看到的: <Te ...

  7. Android中四种OnClick事件的写法

    package com.example.dailphone; import android.support.v7.app.ActionBarActivity; import android.suppo ...

  8. Android中的ImageView的scaleType属性详解

    ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:s ...

  9. android中 EditTex t的 inputType 属性

    //文本类型,多为大写.小写和数字符号    android:inputType="none"    android:inputType="text"    a ...

随机推荐

  1. mysql 按时间段统计(年,季度,月,天,时)

    按年汇总,统计: select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col ...

  2. sphinx :undefined reference to &grave;libiconv&&num;39&semi; 报错解决办法

    sphinx :undefined reference to `libiconv' 报错解决办法   2013-11-30 21:45:39 安装sphinx时不停报错...郁闷在make时报错,错误 ...

  3. mysql 汉字乱码

    原因:mysql server character设置问题 一.检查mysql server 安装目录下my.ini文件 找到如下设置 [mysql] default-character-set = ...

  4. display flex 和a标签不行

    父元素display: flex;  display: -webkit-flex; flex-flow: row wrap; -webkit-flex-flow: row wrap; 配合子元素 fl ...

  5. C&num; &period;NET 0命令行安装Windows服务程序

    设计原则:万物皆对象 背景:在我的项目中,即需要与硬件通过Socket连接通讯,又需要给App提供Wcf服务操作接口,虽然都完成了,但是却是一个控制台(虽然我很喜欢控制台,因为它简单易用),把它放到服 ...

  6. idea 转载

    转载:https://blog.csdn.net/qq_34033853/article/details/77448431 摘要:在创建类时,自动生成代码的注释模板 本篇内容为大家提供的是Intell ...

  7. Qt551&period;主窗体Margin

    1.直接拖控件的方式,Margin的设置 不是在 MainWindow中 而是在 MainWindow下面的centralwidget中,如下图: 2. 3. 4. 5.

  8. Oracle 11g OGG mgr定期清理tail 文件

    OGG mgr定期清理tail 文件 2018-06-11 11:58 440 0 原创 GoldenGate 本文链接:https://www.cndba.cn/leo1990/article/28 ...

  9. python之路--MySQL 库&comma;表的详细操作

    一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create  select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...

  10. 解决浏览器跨域限制方案之JSONP

    一.什么是JSONP JSONP即:JSON with Padding,是一种解决因浏览器跨域限制不允许访问跨域资源的方法. JSONP是一个非官方的协议,它允许在服务器端返回javascript标签 ...