博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Interface&navigation】按钮(29)
阅读量:5974 次
发布时间:2019-06-20

本文共 2473 字,大约阅读时间需要 8 分钟。

按钮由文本或图标(或文本和图标两者)组成,用于传达用户触摸时发生的操作。

【Interface&navigation】按钮(29)

根据您是否需要带有文本,图标或两者的按钮,您可以通过三种方式在布局中创建按钮:

使用文本,使用Button类:

使用图标,使用ImageButton类:

使用文本和图标,使用Button具有android:drawableLeft属性的类:

关键类如下:

Button

ImageButton

响应Click事件


当用户单击按钮时,该Button对象将收到点击事件。

要为按钮定义单击事件处理程序,请将该android:onClick属性添加到<Button>XML布局中的元素。此属性的值必须是您要响应click事件时要调用的方法的名称。然后Activity托管布局必须实现相应的方法。

例如,这是一个带有按钮的布局,使用android:onClick:

在Activity托管此布局的内部,以下方法处理click事件:

/** Called when the user touches the button */public void sendMessage(View view) {    // Do something in response to button click}

您在android:onClick属性中声明的方法必须具有完全如上所示的签名。具体来说,该方法必须:

公开

返回无效
将a定义View为唯一参数(这将View是单击的参数)

使用OnClickListener

您还可以以编程方式而不是XML布局声明click事件处理程序。如果您Button在运行时实例化或者需要在Fragment子类中声明单击行为,则可能需要这样做。

要以编程方式声明事件处理程序,请创建一个View.OnClickListener对象并通过调用将其指定给按钮setOnClickListener(View.OnClickListener)。例如:

Button button = (Button) findViewById(R.id.button_send);button.setOnClickListener(new View.OnClickListener() {    public void onClick(View v) {        // Do something in response to button click    }});

造型你的按钮


按钮(背景图像和字体)的外观可能因设备而异,因为不同制造商的设备通常具有不同的输入控件默认样式。

您可以使用应用于整个应用程序的主题精确控制控件的样式。例如,要确保运行Android 4.0及更高版本的所有设备都在您的应用中使用Holo主题,请android:theme="@android:style/Theme.Holo"在清单的<application>元素中声明。另请阅读博客文章Holo Everywhere ,了解有关在支持旧设备时使用Holo主题的信息。

要自定义具有不同背景的单个按钮,请使用android:background可绘制或颜色资源指定属性。或者,您可以为按钮应用样式,该样式的工作方式类似于HTML样式,以定义多个样式属性,例如背景,字体,大小等。有关应用样式的更多信息,请参阅样式和主题。

无边框按钮

一种有用的设计是“无边框”按钮。无边框按钮类似于基本按钮,除了它们没有边框或背景,但在不同状态(例如单击时)仍然会改变外观。

要创建无边框按钮,请将borderlessButtonStyle 样式应用于按钮。例如:

自定义背景

如果要真正重新定义按钮的外观,可以指定自定义背景。但是,您的背景应该是状态列表资源,而不是提供简单的位图或颜色,根据按钮的当前状态更改外观。

您可以在XML文件中定义状态列表,该文件定义用于不同按钮状态的三种不同图像或颜色。

要为按钮背景创建可绘制的状态列表:

为按钮背景创建三个位图,表示默认,按下和聚焦按钮状态。

要确保图像适合各种大小的按钮,请将位图创建为九个修补程序位图。

将位图放入res/drawable/项目的目录中。确保每个位图正确命名,以反映该按钮状态,他们各自代表,如button_default.9.png,button_pressed.9.png和button_focused.9.png。

在res/drawable/目录中创建一个新的XML文件(将其命名为 button_custom.xml)。插入以下XML:

这定义了一个可绘制资源,它将根据按钮的当前状态更改其图像。

第一个<item>定义按下(激活)按钮时要使用的位图。

第二个<item>定义按钮聚焦时使用的位图(当使用轨迹球或方向键突出显示按钮时)。
第三个<item>定义了当按钮处于默认状态时使用的位图(既不按也不聚焦)。

注意:<item>元素的顺序很重要。当引用此drawable时,将按 <item>顺序遍历元素以确定哪个元素适合当前按钮状态。因为默认位图是最后一个,所以它仅在条件时应用android:state_pressed并且 android:state_focused都被评估为false。

此XML文件现在表示单个可绘制资源,当a Button为其背景引用时,显示的图像将根据这三种状态而更改。

然后只需将drawable XML文件应用为按钮背景:

有关此XML语法的更多信息,包括如何定义禁用,悬停或其他按钮状态,请阅读有关State List Drawable的信息。

其他代码示例


在Android的BorderlessButtons 样品还演示了如何使用覆盖此页面上的API。

联系我

QQ:94297366

微信打赏:

公众号推荐:

【Interface&navigation】按钮(29)

转载于:https://blog.51cto.com/4789781/2148868

你可能感兴趣的文章
BZOJ4321:queue2(DP)
查看>>
【Web】JavaScript 语法入门
查看>>
【Udacity】线性回归方程 Regression
查看>>
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
Centos7网络配置(VMware)
查看>>
IOS中Retain和Copy的区别
查看>>
Web开发者和设计师必须要知道的 iOS 8 十个变化
查看>>
【算法】6 比较排序之外学习新的线性时间排序
查看>>
Android入门(五)UI-单位与尺寸、ListView
查看>>
第一章 计算机网络概述
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
算法笔记--数论模板小集(待增)
查看>>
游戏开发中的矩阵初探
查看>>
SASS初学者入门(转)
查看>>
pl/sql developer开发工具的beautifier美化插件
查看>>
C语言100个算法经典例题(七)
查看>>
ASP.NET MVC下使用文件上传和IIS7下的默认设置限制了上传大小的方法
查看>>
java socket报文通信(三)java对象和xml格式文件的相互转换
查看>>
Selenium学习第二天,了解Selenium工作模式与学习Selenium需要具备的知识与工具。...
查看>>