自定义View归纳(一)——自定义属性

1、自定义属性

    自定义组件往往需要定义一些属性,在Android中自定义组件的属性在values/attrs.xml中声明。一对declare-styleable标签加若干attr子标签声明属性集合和属性,attr标签中的format属性用于设置属性的取值类型。
    常用format属性:

  • color 颜色类型,可用color资源id(@color/xxxx)或"#00000"赋值
  • integer 整型 不带单位
  • reference 资源类型 drawable中的一个资源id
  • dimension 尺寸类型 带单位(dp、sp等) 多用于宽高和字体大小
  • string 文本类型 可以string资源id(@string/xxxx) 或 "xxx" 赋值

    自定义的属性在xml布局文件中使用命名空间来进行赋值操作。命名空间名称可随意取,以官方app命名空间为例:
    添加命名空间:xmlns:app="schemas.android.com/apk/res-aut…"
    例:app:daqiTextSize="20dp"
    自定义View一般重写单参、双参和三参的构造方法,并在三参构造方法中进行自定义属性解析。单参构造方法一般用于java代码中new组件时使用,双参构造方法一般在布局中使用<标签/>时调用,三参构造方法在布局中使用<标签/>并使用style样式去分开定义属性。通常需要单参构造方法调用双参构造方法,双参构造方法调用三参构造方法。
    在构造方法中根据属性设置的format类型,通过TypedArray对象获相应的值。

对于format为Dimension的属性,可以通过三种方法获取:
    1、getDimension()获取一个float类型的精准长度
    2、getDimensionPixelOffset()获取一个将小数点去除的int类型长度
    3、getDimensionPixelSize()获取一个int类型长度,数值进行四舍五入。

    若想使用系统定义好的属性,可以在attr标签中使用android:引用

    //在values/attr.xml中引用
    <attr name="android:text"/>
    //在布局中使用
    android:text = "daqi"
复制代码

    在自定义view获取系统属性:
String text = array.getString(R.styleable.MyTextView_android_text); 使用 R.styleable.自定义属性集合名_android_属性名 获取系统属性

总得来说就是:
    1.自定义CustomView(extends View )类
    2、在values/attrs中编写styleable和attr标签
    3、在布局中使用自定义属性
    4、在自定义View的构造方法中通过TypedArray获取自定义属性

延伸:
    1、构造方法中的AttributeSet其实就是View属性的集合。
    2、使用TypeArray获取属性可以简便获取值的过程,特别对于引用属性被赋予引用资源(R.x.x)时,在AttributeSet中获取的是@id,而使用TypeArray直接获取到引用资源所对应的值。
    //AttributeSet text = @2131623981
    //TypedArray text = daqi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值