Button继承了TextView,它主要是在UI界面上生成一个按钮,该按钮可以供用户单机,当用户单击按钮时,按钮会触发一个onClick事件。
按钮使用起来比较容易,可以通过为按钮指定android:background属性为按钮增加背景颜色或背景图片,如果将背景图片设为不规则的背景图片,则可以开发出各种不规则形状的按钮。
如果只是使用普通的背景颜色或背景图片,那么这些背景是固定的,不会随着用户的动作而改变。如果需要让按钮的背景颜色、背景图片随用户动作状态改变,则可以考虑使用自定义Drawable对象来实现。
实例:按钮、图形按钮、带文字的图片按钮
为了定义图片随用户动作改变的按钮,可以考虑使用XML资源文件Drawable对象,再将Drawable对象设置为Button的android:background属性值,或设为ImageButton的android:src属性
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 文字带阴影的按钮 -->
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文字带阴影的按钮"
android:textSize="12pt"
android:shadowColor="#aa5"
android:shadowRadius="1"
android:shadowDx="5"
android:shadowDy="5" />
<!-- 普通文字按钮 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/red"
android:text="普通按钮"
android:textSize="10pt" />
<!-- 带文字的图片的按钮 -->
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_selector"
android:textSize="11px"
android:text="带文字的图片按钮"/> </LinearLayout>
上面的界面布局中第一个按钮是一个普通按钮,但为该按钮的文字指定了阴影——配置阴影的方式与为TextView配置阴影的方式完全相同,这是因为Button的本质还是
TextView。第二个按钮通过background属性配置了背景图片,因此该按钮将会显示为背景图片形状的按钮。
第三个按钮有点特殊,它指定了android:background属性值为@drawable/button_selector,该属性直接引用一个Drawable资源,该资源对应的XML文件如下。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 指定按钮按下时的图片 -->
<item android:state_pressed="true"
android:drawable="@drawable/red"/>
<!-- 指定该按钮松开时的图片 -->
<item android:state_pressed="false"
android:drawable="@drawable/purple"/>
</selector>
运行上面的Activity显示上面的布局文件,可以看到如图2.20所示的界面
图2.20 各种按钮
在图2.20所示界面的三个按钮中,前两个按钮的背景色、图片都是固定的,用户单击该按钮不会看到任何改变;用户按下最后一个按钮时,将会看到按钮的图片切换为红色。
Button生成的按钮功能很强大,就像第三个按钮时Button生成的,而且也可以通过背景色来设置图片,因此使用Button生成的按钮不仅可以是普通的文字按钮,也可以定制成任意形状,并可以随用户交互动作改变外观。