本文共 2473 字,大约阅读时间需要 8 分钟。
按钮由文本或图标(或文本和图标两者)组成,用于传达用户触摸时发生的操作。
根据您是否需要带有文本,图标或两者的按钮,您可以通过三种方式在布局中创建按钮:
使用文本,使用Button类:
使用图标,使用ImageButton类:
使用文本和图标,使用Button具有android:drawableLeft属性的类:
关键类如下:
ButtonImageButton
当用户单击按钮时,该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是单击的参数)您还可以以编程方式而不是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
微信打赏:
公众号推荐:
转载于:https://blog.51cto.com/4789781/2148868