博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
attrs.xml中declare-styleable 详解(用于自定义控件的属性)
阅读量:5734 次
发布时间:2019-06-18

本文共 2406 字,大约阅读时间需要 8 分钟。

 

1. 框架定义:

<declare-styleable name = "名称">

  <attr name = "……" format = "……" />

</declare-styleable>

 

2. color:颜色值,指定这个属性必须输入的是颜色值

<attr name = "textColor" format = "color" />

 

3. boolean:布尔值,指定这个属性必须输入的是boolean类型(true/false)

<attr name = "focusable" format = "boolean" />

 

4. dimension:尺寸值。注意,这里如果是dp那就会做像素转换为dip

<attr name = "layout_width" format = "dimension" />

 

5. float:浮点值。

<attr name="degree" format="float"></attr> 

 

6. integer:整型值。

<attr name="startAngle" format="integer"></attr> 

 

7. string:字符串

<attr name="text" format="string"></attr> 

 

8. fraction:百分数。使用: android:pivotY = "300%" 

<attr name = "pivotY" format = "fraction" />

 

9. enum:枚举值,设置这个属性必须输入的值。比如style类型,就只能输入STROKE/FILL。在于代码链接的过程中就是传0/1

<attr name="style">

  <enum name="STROKE" value="0"></enum>
  <enum name="FILL" value="1"></enum>
</attr>

 

10. flag:是自己定义的,类似于 android:gravity="top",就是里面对应了自己的属性值。

 <attr name="weight">              

  <flag name="fat" value="0" />             

   <flag name="mid" value="1" />              

  <flag name="thin" value="2" />          

</attr>  

 

11. reference|color:颜色的资源文件。

12.reference|boolean:布尔值的资源文件

注意:由于reference是从资源文件中获取:所以在XML文件中写这个属性的时候必须 personattr:name="@string/app_name"这种格式,否则会出错

 

     属性定义时可以指定多种类型值。

    (1)属性定义:

            <declare-styleable name = "名称">

                   <attr name = "background" format = "reference|color" />

            </declare-styleable>

    (2)属性使用:

             <ImageView

                     android:layout_width = "42dip"

                     android:layout_height = "42dip"
                     android:background = "@drawable/图片ID|#00FF00" />

 

下面将代码和定义的xml文件联系起来

TypedArray tArray = context.obtainStyledAttributes(attrs,R.styleable.PersonAttr);//获取配置属性  

自定义变量age,通过TypedArray 对象来获取xml中国的值。如果用户在使用该控件的时候有定义age属性的值,那么就得到用户定义的值,否则就用第二个参数作为默认值,即:如果没定义,那么默认为age = 15

int age = tArray.getInt(R.styleable.PersonAttr_age, 15);  

 

使用前,需要在该控件或者是他的父控件中声明命名空间:

xmlns:personattr="http://schemas.android.com/apk/res/com.example.declare_styleable"

xmlns:自定义的空间名="http://schemas.android.com/apk/res/自定义视图类所在项目的包名"

 

比如自定义的类叫Rotate,包名是com.example.declare_styleable,那么就按如下方式来使用该控件

<com.example.declare_styleable.Rotate

                   xmlns:pt = "http://schemas.android.com/apk/res/com.example.declare_styleable" 

               pt:interpolator = "@anim/动画ID"

                   pt:fromDegrees = "0" 

               pt:toDegrees = "360"

                   pt:pivotX = "200%"

                   pt:pivotY = "300%" 

               pt:duration = "5000"  />

 

小例子:

attrs.xml(定义)

layout.xml(使用)

转载地址:http://uhrwx.baihongyu.com/

你可能感兴趣的文章
Python3 django2.0 字段加密 解密 AES
查看>>
CCNA实验之:网络地址转换(NAT)实验
查看>>
计算机网络原理笔记-停止等待协议
查看>>
确定当前记录和下一条记录之间相差的天数
查看>>
sql语句返回主键SCOPE_IDENTITY()
查看>>
机器学习开源项目精选TOP30
查看>>
代码分析系列 内存执行过程
查看>>
iOS开发-邮件发送
查看>>
/etc/resolv.conf文件详解
查看>>
【转】VC的MFC中重绘函数的使用总结(整理)
查看>>
JQuery日记_5.13 Sizzle选择器(六)选择器的效率
查看>>
System.gc()与Object.finalize()的区别
查看>>
oracle查看经常使用的系统信息
查看>>
Django_4_视图
查看>>
Linux的netstat命令使用
查看>>
shell实例100例《五》
查看>>
lvm讲解,磁盘故障小案例
查看>>
24.5 saltstack远程执行命令
查看>>
大快网站:如何选择正确的hadoop版本
查看>>
经过这5大阶段,你离Java程序员就不远了!
查看>>