自定义Button样式
来源:互联网 发布:中国移动软件开发待遇 编辑:程序博客网 时间:2024/04/29 16:34
网上实现自定义Button样式的方法有多种,有的自己重写CustomButton类,继承TextView,你可以查看Button.java(http://code.google.com/p/droiddraw/source/browse/trunk/DroidDraw/src/org/droiddraw/widget/Button.java?r=141)及相应的文章,这样做个人认为有点麻烦,本篇参照网上一篇英文文章(
http://blog.androgames.net/40/custom-button-style-and-theme/),下面是我的步骤:
1.首先我们需要三张按钮不同状态下的自定义外观的图片,为了在不同的分辨率下自动缩放,需要NinePatch drawables格式的文件,具体就是xx.9.png格式的图片,具体,需要用Android SDK中Tools文件夹中draw9patch.bat工具来生成这一部分的知识,请查看http://saberhaha.javaeye.com/blog/564392,http://www.developer.com/ws/other/article.php/3889086/Working-with-NinePatch-Stretchable-Graphics-in-Android.htm等。
(注:以前不知道这一点,还闹个笑话,在Timers4Me中自定义TimePicker控件的时候,下载了相应的源码和资源,看到它的图片,我还很纳闷,为什么最后多了个.9,并且图片还有几条黑线几个点,还特意让美工对图片做了处理,将多余的部分去掉。)
本例中,用到以下图片:
* 按钮可以点击,但处于没有点击状态下的黑色XX.9格式背景图片
* 按钮可以点击,被点击下的状态的橙色的XX.9格式背景图片
* 按钮不可用状态下的XX.9格式的背景图片
上面的三张图片,需要放到项目中/res/drawables高中低密度中任何一个文件夹下
2.下面我们需要定义按钮处于不同状态下的样式:在/res/drawables/目录下高中低任何一个文件夹下,新建xml文件,名字可以自己取,这里我命名为custom_button.xml,在不同的状态下会引用相应的图片:
这里定义还是要按照规定的顺序来的,如果把最后一项放到第一条,那么只要按钮可用状态下,第一条条件成立,下面的就不会执行了。
3.另外还需要在/res/values/中新建一个xml文件,名称为styles.xml,这里定义了按钮的文本样式及不同状态下的样式:
4.这里使用了theme,这种定义可以是程序中所有的按钮都是这样的外观,当然了,在实际项目中,不大可能会有这样的需求,只是体会这样使用方式而已,在/res/values/目录中新建xml文件,命名为themes.xml文件:
5.对主题的定义,需要在AndroidManifest.xml的application节点中引用相应的主题,由于主题中规定了按钮的样式,因此所有的按钮都自然成了定义的外观。
程序运行起来的截图如下,你可以点击一下看看效果,实际上可以用ImageButton,引用android:src或者android:background="@style/CustomButton"来设置,附件中是源码,有不对的地方,欢迎拍砖指正。
- 自定义Button样式
- android自定义button样式
- 自定义button按钮样式
- Button按钮自定义样式
- 自定义Button样式
- android自定义button样式
- 关于button自定义样式
- android自定义button样式
- android 自定义button样式
- android 自定义 button样式
- android自定义button样式
- Wpf Button自定义样式
- 自定义button的样式
- 自定义Dialog(自定义button样式)
- 有shape自定义button样式
- android自定义button样式【转】
- Android shape自定义button样式
- Android shape自定义button样式
- 根据进程号获取该进程所在客户端的ip地址
- CMD批量改变文件名
- 查看oracle 隐藏参数
- MySQL安装 Apply security settings报错1045解决方案
- Oracle笔记 十、PL/SQL存储过程
- 自定义Button样式
- 期待已久的藏地密码10终于上市了
- 前言
- 文件的访问权限和安全
- Oracle笔记 十一、PL/SQL函数和触发器
- Map 是错误的 要写成 Map
- Ubuntu tftp设置详解
- 第2章 步入Struts2框架开发的殿堂
- Map 是错误的 要写成 Map