$Android自定义控件在不同状态下的属性
2024-06-05 16:20:20
在写代码的时候,有时候需要控件在不同状态下显示不同的外观,比如在按钮按下的时候要变颜色,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
最新文章
- Java 遍历map
- Azure操作手册集合
- shell编程学习笔记--整数自增
- Adobe的学者约翰—沃洛克博士
- Windows环境下32位汇编程序设计C版code--第五章(二)
- 对称性破缺衰变与分类
- mysql 事物gljbie_图片转成base64格式上传至数据库
- nor flash 基础篇
- 从去除噪点的说起,有OpenCV要什么PS?
- linux6.3支持gcc版本,Linux编程中GCC对C++标准支持和如何选择GCC版本使用
- 为什么unity 安装完模块还是找不到sdk_Unity填坑笔记(四)——移植UWP平台
- centos上安装和配置tomcat
- IDEA本地项目与SVN项目关联
- mysql 增加分区_mysql在原有表的基础上添加分区
- hdu5141 线段树
- 2020年Spring学习笔记目录
- android对话框列表,android列表对话框(dialog)的实现
- Windows 10升级无法选择保留个人文件、设置问题解决
- 吴恩达-机器学习-简单决策树
- Windows7UltimateSP1x64安装及一些设置
热门文章
- RecyclerView滑动到底部自动加载
- 卷积,DFT,FFT,图像FFT,FIR 和 IIR 的物理意义
- [转]jQuery设计思想
- 线性表--算法设计题2.29
- 不重复int数组里找不存在的值
- 监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?
- java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
- CentOS中通过NAT连接网络
- Postman安装与使用(网络请求神器)--post、get请求
- python关键词提取源码_Python 结巴分词 关键词抽取分析