android用户界面设计:基本按钮,Android用戶界面設計:基本按鈕
本文向你展示了在你的android應用程序中創建一個簡單的Button或ImageButton控件的步驟。首先,你會學到如何向你的布局文件中添加按鈕控件。然後你會學習如何用兩種方法處理用戶對按鈕的點擊。最後,我們討論android中按鈕控件一些其它的可用特性。
第1步:創建android應用程序
我們從創建Android程序開始。你平常一樣完成你的android應用。一旦你已經創建項目並可以運行,決定你希望向什麼樣的屏幕添加Button控件。可能你就簡單地創建了一個使用默認活動和布局(main.XML)的新android項目。這個教程將使用這種情況作例子。一旦你創建了你的android項目,你就可以繼續學習這篇文章了。
第2步:使用Button控件
Android SDK包含兩個在你的布局中可以使用的簡單按鈕控件:Button(android.widget.Button)和ImageButton(android.widget.ImageButton)。這些控件的功能很相似因此我們幾乎可以一並地的討論它們。這兩個控件不相同的地方基本上就是外觀上;Button控件有一個文本標簽,而ImageButton使用一個可繪制的圖像資源來代替。Button使用的一個很好的例子應該是一個簡單的帶有“保存”文本標簽的按鈕。ImageButton使用的一個很好的例子可能是音樂播放器按鈕的集合,包括播放P, 暫停 以及停止。
這裡是一個示例屏幕,包括一個Button控件(左邊)和一個ImageButton控件(右邊)。
Android SDK還包含了一些其它更不為人知的從上面兩個基本按鈕類型繼承來的類按鈕控件,包括CompoundButton,RadioButton,ToggleButton,和ZoomButton。要了解這些控件的更多信息,查看android文檔。你也可以通過繼承合適的類並實現控件行為來創建自定義控件。
第3步:向布局添加Button控件
Button控件通常都被作為活動的布局資源文件一部分。比如,要添加一個Button控件到與你程序相關的main.xml布局資源中,你必須編輯布局文件。你可使用Eclipse的布局資源設計器,或者直接編輯XML。像按鈕這樣的控件也可以通過程序動態地創建並在運行時添加到你的屏幕上。簡單地通過它的類來創建合適的控件並將它添加到你的活動中的布局。
要添加一個Button控件到布局資源文件,打開/res/layout/main.XML布局文件,它是你的android項目的一部分。點擊你想要為其添加Button控件的LinearLayout (或者父級布局控件,比如RelativeLayout或FrameLayout)。在Eclipse中,你可以點擊Outline標簽中的父級布局,然後使用綠色加號按鈕添加一個新的控件。選擇你要添加的控件——在這個例子中是Button控件。
要配置Button控件的外觀,選中該控件並通過在屬性標簽中改變屬性值來調節控件的屬性。下面是一些你會想知道的特別的屬性:
使用id屬性給Button或ImageButton一個唯一的名字。
使用文本屬性設置Button控件上要顯示的文字;使用src屬性設置ImageButton控件上要顯示的圖片。
將控件的布局高度和布局寬度屬性設置為wrap_content.
設置任何其它屬性來調整控件的外觀。比如,使用文本顏色,文本大小和文本樣式屬性來調整Button的字體。
下面是用來生成前段中展示的屏幕的布局資源文件的內容。它包括三個控件。RelativeLayout組織屏幕上的控件,也就是兩個子控件,一個Button和一個ImageButton,如下:
<?XML version="1.0" encoding="utf-8"?>
第4步:處理點擊
現在,如果你運行你的程序,按鈕控件顯示出來了,但是如果你點擊它們不會有任何反應。現在應該來處理控件上的點擊事件了。有好幾種方法可以做到。
讓我們從簡單的方法開始吧。Button和ImageButton控件有一個叫onClick的屬性(在屬性面板裡叫“On Click”)。你可以通過這個屬性設置要處理點擊事件的方法名,然後在你的活動中實現這個方法。比如,你可以將你的Button控件屬性設置為onMyButtonClick。在XML中,這個屬性將如下所示:
android:onClick="onMyButtonClick"
然後,在你的活動類,你需要實現這個方法。它應該是一個帶有單個參數(一個VIEw對象)的公有的void方法。例如,下面的按鈕點擊實現了當Button控件被點擊時在屏幕生成一個消息框:
public void onMyButtonClick(View vIEw) { Toast.makeText(this, "Button clicked!", Toast.LENGTH_SHORT).show(); }
當你點擊這個Button控件,onMyButtonClick()方法被調用,在屏幕上顯示一個消息。你的Button按鈕能做什麼就取決於你自己了。下圖顯示了當點擊Button按鈕時消息是如何展示的:
第5步:處理點擊——實現OnClickListener
實現點擊事件處理的另一種方法是使用setOnClickListener()方法向你的按鈕控件注冊一個新的VIEw.OnClickListener。這種方式代替了將你布局資源中的按鈕控件的On Click屬性設置為一個你必須實現的方法的方式,你可以在你的活動中動態地做這些事情。雖然這可能看起來有很多額外的代碼要寫,但至少理解它是非常重要的,因為在一些控件上點擊不是需要處理的唯一事件。我們將要向你展示的程序應用了其它的事件,比如長按。
要使用這個方法,你必須更新你的活動類以注冊控件點擊事件。通常情況下通過你的活動的onCreate()方法來實現。使用findVIEwById()方法找到控件然後使用它的setOnClickListener()方法來定義當它被點擊時的行為。你將需要自己去實現界面的onClick()方法。比如,下面的代碼(位於活動的onCreate()方法中)為我們的ImageButton控件注冊了一個點擊處理器。
ImageButton myImageButton = (ImageButton) findVIEwById(R.id.ImageButton01); myImageButton.setOnClickListener(new VIEw.OnClickListener() { public void onClick(VIEw v) { Toast.makeText(BasicButtonActivity.this, "ImageButton clicked!", Toast.LENGTH_SHORT).show(); } });
同樣地,你可以使用這個技術來實現長按點擊處理,通過使用控件的setOnLongClickListener()方法。
總結
按鈕控件在Android程序中經常會用到。在這個快速教程中你學習了如何創建兩種不同的android按鈕控件:Button和ImageButton。你也學習了實現這些類型按鈕控件的按鈕點擊事件處理的幾種方法。(注:原文作者:RockUX–WEB 點此查看英文。)
相关文章:

快速浏览Silverlight3 Beta:当HLSL遇上Silverlight
HLSL高级着色器语言(High Level Shader Language,简称HLSL),由微软拥 有及开发的一种语言,只能供微软的Direct3D使用。 HLSL是微软抗衡GLSL的产品,同时不能与OpenGL标准兼容。他跟Nvidia的Cg非常相似。 看…

“80后”财富新贵创业秘诀
"80后"财富新贵创业秘诀:具有冒险和创新精神 不论是文化市场,还是经济市场,当许多人还认为还是“60后”或“70后”的天下时,“80后”财富新贵已在不知不觉中浮出水面,并试图用自己的实力证明新一代的崛起。李想、戴志康…

小插件 打开Android程序动画,android-单击小部件后如何启动活动?
这就是对我有用的…onUpdate方法代码应为:Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {for (int i 0; i < appWidgetIds.length; i) {int appWidgetId appWidgetIds[i];try {Intent intent new …

“深度学习之父”大谈AI:寒冬不会出现,论文评审机制有损创新
整理 | 琥珀出品 | AI科技大本营【AI 科技大本营导读】近日《连线》杂志发表了一篇文章,记录了与“深度学习之父” Geoffrey Hinton 围绕人工智能伦理、技术、学术等领域的采访实录。当被问到如今人工智能是否将走进寒冬时,Hinton 的回答非常坚决&#x…

金山词霸2009牛津版
http://download.iciba.com/Pw2009_oxf/Powerword2009Oxf.25269.4011.exe新版本的词霸2009牛津版的 需要的朋友下载看看 转载于:https://blog.51cto.com/zmdzhangzhe/112418

面向对象之数值的悲剧(8月28日会议有感)
枚举的悲剧 枚举基本用法大家应该都很熟悉,在我们去避免硬编码,增强代码可读性,可维护性方面很好用。不过话说枚举底层还是比较复杂的,以前看过一些关于枚举的说明。至少C#里边的枚举是很复杂的,本身是结构类型&#x…

C++虚函数探索!
C中的虚函数实现了C中的多态。昨天C老师着重讲了讲虚函数。这个很重要,也有点玄机在里面。 下面阐述一下理论: C的类机制中有支持多态的技术来解决抽象编程。使用的是滞后捆绑技术。即预先设定其成员函数虚函数性质,使得任何捆绑该成员函数的…

htc820+android+l,首款高通64位八核 HTC Desire 820评测
9月初的IFA2014展会期间,多款搭载64位处理器的新品智能手机扎堆发布,也算是拉开了64位处理器安卓手机的时代序幕。其中,最引人注目的新品之一莫过于HTC Desire 820,它于北京时间9月4日在德国柏林发布,拔得了全球首款64…

关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的/g是什么意思?”...
为了解答“正则表达式(/[^0-9]/g,)中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结一下。 总结1:附件参数g的用法 表达式加上参…

那位13岁就当上老板的开发者是如何炼成的?
当我们听到有关年轻有为的企业家的故事时,大多会想到 25 到 30 岁左右的年轻人。毕竟,Google、亚马逊、Facebook、Twitter、LinkedIn、Pinterest、Instagram、Snapchat 以及其它很多公司的创始人都是在他们 20 多岁时创办的这些企业。随着人们与科技的联…

phonegap android,Phonegap 3不适用于Android Studio
对我来说,这似乎很简单,但我根本做不到.我已经成功安装了npm install -g phonegap并安装了phonegap.C:\var\www\sexdiaries.co.uk>phonegap create sexdiaries -n SexDiaries -i co.uk.sexdiaries.app然后,我被告知Here尝试运行andriod但出现以下错误C:\var\www\sexdiaries.…

安装VCenter提示数据库排序规则有问题
安装VCenter提示数据库排序规则有问题 有时候在安装sql server 数据库时你如果修改了排序规则,那么在安装VCenter时它会提示你的数据库排序规则有问题,不让你安装。这个时候你去修改一下数据库规则就可以继续安装了。 解决方法: 1.把安装光盘…

点滴印象中的周其凤校长
原文:[url]http://blog.sina.com.cn/s/blog_4908ded80100bbui.html?tj1[/url]2003年9月,我进入吉林大学读书,第二年周其凤成为吉林大学新任校长。此后的三年,我见过校长两次,这两次,校长的风格给我留下了深…

开源50万行代码,百亿广告分成,百度智能小程序能成吗?
作者 | 非主流出品 | AI科技大本营终于,BAT 在小程序的赛道上展开了激战,而这一场战争得到了百度前所未有的重视。9 月 4 日,百度总裁张亚勤称拉动百度业务的“新四小龙”——智能小程序、信息流、短视频/小视频以及百度云。紧接着࿰…

接近WinHEC 2008
第一次听说windows硬件工程大会还以为微软要讲她出的硬件的一个技术交流大会,后来才了解到是微软公司面向个人电脑终端、服务器、硬件设备以及驱动程序的最具前瞻性的全球硬件技术信息盛会。而不是讲硬件本身,是与硬件相关的软件产品。今年是第17届WinHE…

加深C# 中字符串前加@符号理解以及使用~~
先看代码(以下代码使用在C#,环境ASP.NET): protectedvoidPage_Load(objectsender, EventArgs e) { test1("\a"); test1("\a"); test2("\a"); test2("\a"); test…

鸿蒙系统首批更新机器,鸿蒙系统升级名单
【鸿蒙系统升级名单】华为的鸿蒙系统算是早早放出消息的重量级产品,国产OS的名号也吸引了不少小伙伴的注意。很多朋友都想体验传闻已久的鸿蒙操作系统,但也担心自己的手机无法支持。那么,鸿蒙操作系统的升级名单到底有哪些呢机器呢?下面就让…

公开课报名 | 基于自定义模板的OCR结果的结构化处理技术
随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证、票据识别等等。O…

产生所有排列---旋转法------2013年1月22日
我觉得这是一个很巧秒的算法。思路非常直接,从代码里可以很容易看出来,再单步调试查看set数组的值就可以很清楚地明白算法的过程。代码如下:1 #include <stdio.h>2 #define MAX 10003 4 int n3; //the number of set element5 int set[MAX]{1,2,3…

VS Code 正在统治代码编辑器领地!
出品:CSDN(ID:CSDNnews)【CSDN编者按】代码编辑器之于程序员的重要性不言而喻。长久以来,Vim、Emacs等老牌编辑器一直占据着举足轻重的地位,但是近年来情况似乎发生了变化。根据软件工程师招聘网站Tripleby…

Linux主辅DNS数据不同步故障排除
Linux主辅dns数据不同步故障排除欢迎使用微信关注“云运维联盟”公众号,第一时间了解本博客动态!在互联网中,我们知道任何一台提供应用服务的主机(例如:HTTP、FTP等)都有它一个便于记忆Domain Name…

c语言贝叶斯分类,基于朴素贝叶斯分类器的文本分类算法(C语言)
基于朴素贝叶斯分类器的文本分类算法(C语言)基于朴素贝叶斯分类器的文本分类算法(C语言).txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了。他只是比对方更珍惜这份感情。#include #include #include //_getcwd(), _chdir()#include…

开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)
整理 | Jane出品 | AI科技大本营【导语】提到开源项目,2018 年注定是不平凡的一年。据 Octoverse 报告数据,仅在 2018 年,Github 上的新用户就比过去六年的用户总数还要多 ,存储库数量近一亿,这些增长都要归功于开源社…

给现有MVC项目增加Web API支持
在MVC4中自带了Web API不再需要从Nuget中下载。 Step1:增加System.Web.Http,System.Web.Http.WebHost,System.Net.Http三个程序集的引用,都是4.0版本; Step2:增加路由,默认的路由代码如下 route…

word自动消除html标签,清理Word生成HTML的冗余;清理与清除HTML标签
众所周知,当直接将word中的内容复制到网页上时,会产生很多冗余代码;而现在,在线编辑器又很普遍;就包括,现在用的百度空间的这个文本编辑器,如果直接从WORD中写好的文章复制进来,本来…

开头轰轰烈烈,结局冷冷清清
开头轰轰烈烈,结局冷冷清清转载于:https://blog.51cto.com/xiaomage/115649

C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数到comand。修改后的代码如下 SQ…

Skype for Business Server 2015-03-后端服务器-0-准备
1. 规划-拓朴图 2. 规划-服务器 3. 准备-软件 Sql Server 2014: cn_sql_server_2014_enterprise_edition_x64_dvd_3932882.iso Sql Server 2014 CU6: Cumulative update package 6 for SQL Server 2014 https://support.microsoft.com/en-us/kb/3031047 4. 准备-虚拟…

html文档使用,使用提供 HTML 文档的过程
使用提供 HTML 文档的过程通常,编写一个可处理发送给特定服务的请求的过程是最简单的方式。这样的过程将返回一个 Web 页。或者,该过程也可接受作为 URL 的一部分进行传递的参数以对其输出进行自定义。但以下示例要简单很多。它例示了服务可以简单到什么…

这样学算法,包会包懂so easy~
整理 | Jane出品 | AI科技大本营面试前,大家都会开始刷各类网站,希望能在算法之道上有所进益,也期待有幸能在面试中碰上原题,而在那么多的网站中,LeetCode 一定是候选学习的网站之一。但是 LeetCode 网站上的题量和难度…