按钮(Buton)组价的功能和用法
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生成的按钮不仅可以是普通的文字按钮,也可以定制成任意形状,并可以随用户交互动作改变外观。