Android 用state list drawable动态改变按钮点击前后的状态
2016-01-06 20:43
591 查看
有时候我们希望按钮在点击时和未点击时显示不同的背景和(或)文字样式,这时我们可以使用state list drawable自定义drawable。
首先我们创建按钮点击状态下应显示的shape(res/drawable/button_shape_pressed.xml):
然后创建按钮未点击状态下应显示的shape(res/drawable/button_shape_normal.xml):
接下来我们需要一个state list drawable, state list drawable必须包含一个selector根元素,以及用来描述状态的一个或多个item。右键单击res/drawable/目录,以selector为根元素,创建一个名为button_bg_shape.xml文件:
在未点击状态与点击状态下,按钮显示文字的颜色不同。与上一步骤一样,我们右键单击res/drawable/目录,创建一个button_text_color.xml的state list drawable:
最后在自己的button中设置一下background和textcolor属性就大功告成啦。
怎么样,自己试一下吧~~~
首先我们创建按钮点击状态下应显示的shape(res/drawable/button_shape_pressed.xml):
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="# ff00ff " /> <stroke android:width="1dip" android:color="# ff00ff " /> <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" /> <corners android:radius="8dp" /> </shape>
然后创建按钮未点击状态下应显示的shape(res/drawable/button_shape_normal.xml):
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffffff" /> <stroke android:width="1dip" android:color="#A0A0A0" /> <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" /> <corners android:radius="8dp" /> </shape>
接下来我们需要一个state list drawable, state list drawable必须包含一个selector根元素,以及用来描述状态的一个或多个item。右键单击res/drawable/目录,以selector为根元素,创建一个名为button_bg_shape.xml文件:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/button_shape_normal" android:state_pressed="false"></item> <item android:drawable="@drawable/button_shape_pressed" android:state_pressed="true"></item> </selector>
在未点击状态与点击状态下,按钮显示文字的颜色不同。与上一步骤一样,我们右键单击res/drawable/目录,创建一个button_text_color.xml的state list drawable:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="false" android:color="#000000" /> <item android:state_pressed="true" android:color="#ffffff" /> </selector>
最后在自己的button中设置一下background和textcolor属性就大功告成啦。
<Button android:id="@+id/testBtn" android:layout_width="50dp" android:layout_height="30dp" android:layout_centerVertical="true" android:text="@string/testText" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="5dp" android:layout_marginLeft="5dp" android:textColor="@drawable/button_text_color" android:background="@drawable/button_bg_shape" />
怎么样,自己试一下吧~~~
相关文章推荐
- android之旅23 多媒体处理2: 画画板
- android studio 自动生成R文件影响编译的解决方法
- Android程序设计基础
- android 设计的优点
- Android 传感器 IV-环境传感器
- envsetup.sh的常用命令
- Android工具库记:shadowlayout轻松实现阴影
- Android开发资料
- Android开发:LayoutParams的用法
- Android 耳机驱动知识
- 【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错
- 关于Android中“OnClickLinstener cannot be resolved to a type”的错误
- Android Tools集合下载
- [Android]贝塞尔曲线应用及QQ气泡拖动原理实践
- Android驱动加载方法
- Android-Cannot merge new index 66195 into a non-jumbo instruction的解决办法
- Android 传感器 III-位置传感器
- 浅谈Android性能优化方案
- Android shape属性详解
- ListView 请求(加载)可视区域Item的图片