在写代码的时候,有时候需要控件在不同状态下显示不同的外观,比如在按钮按下的时候要变颜色,EditText获取焦点时候边框要变颜色等。那么下面就来梳理一下这些是怎么实现的。

  (一)按钮按下时候变颜色

  1、在项目的drawable目录下创建selector_title_imagebutton_bg.xml文件,内容如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 3
 4     <!-- title栏ImageButton按下去时候的颜色 -->
 5     <item android:drawable="@drawable/LightBlue" android:state_pressed="true"/>
 6
 7     <!-- title栏ImageButton正常时候的颜色 -->
 8     <item android:drawable="@drawable/ThemeDefault"/>
 9
10
11     <!-- 注:LightBlue和ThemeDefault都是在color.xml文件中定义的drawable类型的颜色值 -->
12
13 </selector>

  2、在values目录下styles.xml文件中增加一个style项,如下:

1  <!-- 标题栏ImageButton的style -->
2     <style name="TitleIbStyle" parent="@android:style/Widget.ImageButton">
3         <item name="android:background">@drawable/selector_title_imagebutton_bg</item>
4     </style>

  3、在布局xml文件中,创建ImageButton时只需设置其style属性为"TitleIbStyle"即可:

1       <ImageButton
2             android:id="@+id/title_base_left_ib"
3             style="@style/TitleIbStyle"
4             android:layout_width="wrap_content"
5             android:layout_height="wrap_content"
6             android:padding="5dp" />

  

  (二)EditText获取焦点时候边框变颜色

  1、在项目的drawable目录下新建一个selector_edittext_bg.xml文件:

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector xmlns:android="http://schemas.android.com/apk/res/android">
3
4     <item android:drawable="@drawable/et_pressed" android:state_focused="true"/>
5     <item android:drawable="@drawable/et_normal"/>
6
7     <!-- 注:et_pressed和et_normal是drawable目录下两张相同大小、填充颜色都为白色但边框颜色不同的圆角矩形的png图片 -->
8
9 </selector>

  2、在values目录下styles.xml文件中增加一个style项,如下:

1 <!-- EditText的自定义风格 -->
2     <style name="MyEtStyle" parent="@android:style/Widget.EditText">
3         <item name="android:background">@drawable/selector_edittext_bg</item>
4     </style>

  3、在布局xml文件中,创建EditText时只需设置其style属性为"MyEtStyle"即可:

1           <EditText
2                     android:id="@+id/content_et"
3                     style="@style/MyEtStyle"
4                     android:layout_width="wrap_content"
5                     android:layout_height="wrap_content"

  

  (三)总结

  通过上述方式,其实还可以实现很多种其他的自定义效果,有待进一步探索。

转载于:https://www.cnblogs.com/jiayongji/p/5373610.html

最新文章

  1. Java 遍历map
  2. Azure操作手册集合
  3. shell编程学习笔记--整数自增
  4. Adobe的学者约翰—沃洛克博士
  5. Windows环境下32位汇编程序设计C版code--第五章(二)
  6. 对称性破缺衰变与分类
  7. mysql 事物gljbie_图片转成base64格式上传至数据库
  8. nor flash 基础篇
  9. 从去除噪点的说起,有OpenCV要什么PS?
  10. linux6.3支持gcc版本,Linux编程中GCC对C++标准支持和如何选择GCC版本使用
  11. 为什么unity 安装完模块还是找不到sdk_Unity填坑笔记(四)——移植UWP平台
  12. centos上安装和配置tomcat
  13. IDEA本地项目与SVN项目关联
  14. mysql 增加分区_mysql在原有表的基础上添加分区
  15. hdu5141 线段树
  16. 2020年Spring学习笔记目录
  17. android对话框列表,android列表对话框(dialog)的实现
  18. Windows 10升级无法选择保留个人文件、设置问题解决
  19. 吴恩达-机器学习-简单决策树
  20. Windows7UltimateSP1x64安装及一些设置

热门文章

  1. RecyclerView滑动到底部自动加载
  2. 卷积,DFT,FFT,图像FFT,FIR 和 IIR 的物理意义
  3. [转]jQuery设计思想
  4. 线性表--算法设计题2.29
  5. 不重复int数组里找不存在的值
  6. 监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?
  7. java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
  8. CentOS中通过NAT连接网络
  9. Postman安装与使用(网络请求神器)--post、get请求
  10. python关键词提取源码_Python 结巴分词 关键词抽取分析