自定义属性流程
2017-01-16 22:17
155 查看
自定义属性
创建自定义属性
1.新建values/attrs.xml 2.模仿系统的属性写自定义属性 <!--布局--> <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="ToggerButton" > <attr name="tb_background" format="reference" /> <attr name="tb_slideicon" format="reference" /> <attr name="slide_state" format="boolean" /> </declare-styleable> </resources> //resources-资源;;declare-styleable 声明,宣布-样式;;format-格式;版式;;reference-引用 //name="ToggerButton"--自己命名,一般用需要使用此属性的类名,当然别的类也可以使用此自定义属性 //attr name="tb_background" 属性名,自己命名,见名知意 //format="reference" 属性的格式,reference表示一个引用,类型还有boolean,string,color,dimension(尺寸)
布局中使用自定义属性
1.在使用此自定义属性的layout/xxx.xml的根布局声明命名空间 系统:xmlns:android="http://schemas.android.com/apk/res/android" 模仿:xmlns:gangan="http://schemas.android.com/apk/res/com.itheima.toggerbutton" 修改系统的即可:名字android-->gangan;后缀android-->com.haha.toggerbutton(包名) 2.使用自定义的属性,使用时用自定义的名字gangan为前缀 格式:gangan:属性名="属性格式" <com.haha.toggerbutton.ToggerButton android:id="@+id/togger_button" android:layout_width="wrap_content" android:layout_height="wrap_content" gangan:slide_state="true" gangan:tb_background="@mipmap/slide_background" gangan:tb_slideicon="@mipmap/slide_icon" />
Java代码中使用自定义属性
自定义属性一般配合自定义控件使用 1.在自定义的控件的的两个参数的构造中,获取属性的值 //带两个参数构造 AttributeSet attrs属性的集合 public ToggerButton(Context context, AttributeSet attrs) { //声明属性的命名空间,要求与layout/xxx.xml中写的相同 String namespace = "http://schemas.android.com/apk/res/com.itheima.toggerbutton2"; //获取引用类型的资源 参数:namespace, "tb_background"(属性名), -1(如果取不到,默认的返回值) int tb_backgroundId = attrs.getAttributeResourceValue(namespace, "tb_background", -1); int tb_iconId = attrs.getAttributeResourceValue(namespace, "tb_slideicon", -1); //获取boolean类型的资源 boolean slide_state = attrs.getAttributeBooleanValue(namespace, "slide_state", false); //这里就可以将得到的资源做个性化操作,传递给下面的方法 setToggerResource(tb_backgroundId, tb_iconId); setToggerState(slide_state); }
相关文章推荐
- 第四课4、ROS客户端
- CF 434E 圣诞树(tree)
- 10.Android11种传感器介绍
- Hadoop shell常用命令
- 【Unity问题】当Unity导出文件不完整怎么办
- AFNetworking汉化之“AFURLSessionManager”
- Linux中程序详细的内存使用查看
- linux 下 eclipse 开发环境的搭建
- dubbo源码分析-client执行过程
- spark-defaults.conf配置文件
- 设计模式之工厂模式
- Linux+shell学习记录和思维导图
- redis-cluser集群搭建及使用
- maven初次使用--环境变量的配置
- 二分图匹配之最佳匹配——KM算法
- 基础知识(11) -- 二叉树
- 2017.1.16——寒假集训第四天
- 9.Handler消息机制
- 396. Rotate Function*
- InstantObjects是delphi上的一个不错的ORM框架,可以实现类似hibernate的功能。