Xamarin.Android中使用android:onClick="xxx"属性
原文: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"属性的更多相关文章
- Android中TextView和EditView常用属性设置
Android中TextView和EditView常用属性设置 点击跳转
- 关于那些Android中不常用的设置属性
很多在manifest中的属性我们经常遗忘了它们,或者经常看到但又不是很明白它的作用.那么在这里我就拿了一些属性简单的解释一下,防止以后碰到却不知道其中的意思.不是很全,以后会断断续续的补充吧 一.a ...
- Android笔记(六十六) android中的动画——XML文件定义属性动画
除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在 ...
- Android中常用控件及属性
在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介 ...
- android 中targetSdkVersion和与target属性的区别
AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别 在AndroidMenifest.xml中,常常会有 ...
- Android中View自己定义XML属性具体解释以及R.attr与R.styleable的差别
为View加入自己定义XML属性 Android中的各种Widget都提供了非常多XML属性,我们能够利用这些XML属性在layout文件里为Widget的属性赋值. 例如以下所看到的: <Te ...
- Android中四种OnClick事件的写法
package com.example.dailphone; import android.support.v7.app.ActionBarActivity; import android.suppo ...
- Android中的ImageView的scaleType属性详解
ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:s ...
- android中 EditTex t的 inputType 属性
//文本类型,多为大写.小写和数字符号 android:inputType="none" android:inputType="text" a ...
随机推荐
- 【Demo 0008】标签控制器
本章学习要点: 1. 了解标签控制器基础知识; 2. 掌握标签控制器层次结构; 3. 掌握标签控制器基本用法; 4. 掌握自定义标签控制器: ...
- QT断点续传(原理:需要在HTTP请求的header中添加Rang节,告诉服务器从文件的那个位置开始传输.格式为bytes 开始传输的位置)
//功能: 根据一个URL地址将数据保存到指定路径下,支持断点续传//参数: url --需要访问的URL地址// SavePath -- ...
- PHP正则表达式完全手册
原文:PHP正则表达式完全手册 php的正则表达式完全手册 前言 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感.只要认真去阅读这些资料,加上应用的时候进行 ...
- jquery中怎么删除<ul>中的整个<li>包括节点
.$('ul li').remove(); .$('ul li').each(function(){ $(this).remove(); }); .$("ul").find(&qu ...
- 14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量 InnoDB 使用bac ...
- DB2错误码解释对照
表 2. SQLSTATE 类代码 类 代码 含义 要获得子代码, 参阅... 00 完全成功完成 表 3 01 警告 表 4 02 无数据 表 5 07 动态 SQL 错误 表 6 ...
- 例3.1 猜猜数据结构 UVa11995
1.标题叙述性说明:点击打开链接 2.解题思路:据来推測一种可能的数据结构,备选答案有"栈,队列.优先队列".结果也可能都不是或者不确定. STL中已经有这三种数据结构了,因此直接 ...
- Android开发之style属性和提前定义样式
摘要 Android平台定义的主题样式: android:theme="@android:style/Theme.Dialog" // 将一个Activity显示为对话框模式and ...
- 解决编译apache出现的问题:configure: error: APR not found . Please read the documentation - ____哊.時^随记 - 51CTO技术博客
解决编译apache出现的问题:configure: error: APR not found . Please read the documentation - ____哊.時^随记 - 51CTO ...
- 一致性哈希算法(consistent hashing)样例+測试。
一个简单的consistent hashing的样例,非常easy理解. 首先有一个设备类,定义了机器名和ip: public class Cache { public String name; pu ...