精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-02
在开发中为控件添加Listener是非常常见的工作,最简单的添加Listener方式可以这样: findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Do stuff } }); 采用上述方法添加Listener有个缺点就是如果控件太多的话,Listener数量也会增多,因此,可以采用如下的小窍门减少Listener的数量: View.OnClickListener handler = View.OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.Button01: // doStuff break; case R.id.Button02: // doStuff break; } } } findViewById(R.id.myButton).setOnClickListener(handler); findViewById(R.id.myOtherButton).setOnClickListener(handler); 在Android1.6里面,添加Listener的工作变得相当的简单(感觉更像在做网页编程!),具体步骤如下: 1.首先在layout里面定义Button并指定响应的Listener <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:text="Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="myClickHandler01" /> <Button android:text="Button02" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="myClickHandler02" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> 其中以下这两行就是新增的特性: android:onClick="myClickHandler01" android:onClick="myClickHandler02"
2.在活动里面定义public的方法myClickHandler01、和myClickHandler02(注意这两个方法必须有一个View的形参)。 package com.ray.test; import android.app.Activity; import android.os.Bundle; import android.view.View; public class TestOnClickListener extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void myClickHandler01(View target){ setTitle("myClickHandler01"); } public void myClickHandler02(View target){ setTitle("myClickHandler02"); } } 当然,你也可以采用这种写法: 将两个按钮设置到同一个Listener android:onClick="myClickHandler" android:onClick="myClickHandler" package com.ray.test; import android.app.Activity; import android.os.Bundle; import android.view.View; public class TestOnClickListener extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void myClickHandler(View target){ switch (target.getId()) { case R.id.Button01: setTitle("myClickHandler01"); break; case R.id.Button02: setTitle("myClickHandler02"); break; } } } 参考文章:《UI framework changes in Android 1.6》(需翻墙) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-02
感谢lz分享.果然方便些了.
感觉目前UI还处在用notepad写html的阶段..快出强大的设计工具吧.... |
|
返回顶楼 | |
发表时间:2009-12-03
altchen 写道 感谢lz分享.果然方便些了.
感觉目前UI还处在用notepad写html的阶段..快出强大的设计工具吧.... 你还别说... 高手都是用vi和notepad, 人家对IDE不屑... 囧 |
|
返回顶楼 | |
发表时间:2009-12-03
lordhong 写道 altchen 写道 感谢lz分享.果然方便些了. 感觉目前UI还处在用notepad写html的阶段..快出强大的设计工具吧.... 你还别说... 高手都是用vi和notepad, 人家对IDE不屑... 囧 呵呵,xml布局我一般都是手写的,android早期adt是没有可视化布局设计的,所以习惯了,呵呵 |
|
返回顶楼 | |
发表时间:2009-12-03
这个技巧非常使用,记下来了
谢谢 |
|
返回顶楼 | |
发表时间:2009-12-03
altchen 写道 感谢lz分享.果然方便些了.
感觉目前UI还处在用notepad写html的阶段..快出强大的设计工具吧.... 可怜我还都是用代码一行行写的呢... |
|
返回顶楼 | |
发表时间:2009-12-03
melode11 写道 altchen 写道 感谢lz分享.果然方便些了.
感觉目前UI还处在用notepad写html的阶段..快出强大的设计工具吧.... 可怜我还都是用代码一行行写的呢... 哈哈,其实程序员就应该一行一行写。 |
|
返回顶楼 | |
发表时间:2009-12-04
raymondlueng 写道 melode11 写道 altchen 写道 感谢lz分享.果然方便些了.
感觉目前UI还处在用notepad写html的阶段..快出强大的设计工具吧.... 可怜我还都是用代码一行行写的呢... 哈哈,其实程序员就应该一行一行写。 不过Android的 UI就算用代码写也挺容易的,layout都是自动的,只要关心hierarchy就行。 而且像自定义组件和layout,本来就得用代码才能写出来。 |
|
返回顶楼 | |
发表时间:2009-12-04
有不用手写的工具么。。囧。。。好像XML一直手写的说
|
|
返回顶楼 | |
发表时间:2010-05-03
谢谢 分享
|
|
返回顶楼 | |