自定义view属性 android,自定义view系列---自定义属性

我们在自定义view的时候,经常会需要自定义属性。比如上篇讲的继承View实现TextView,因为是直接继承View的,所以该自定义view就没有android:text属性了,但是对于一个TextView来说,text属性又是十分重要的,否则在使用该自定义的TextView时,就不能为该View设置text值了,那这个view还能叫做TextView吗?

要解决这个问题,就需要用到view的自定义属性,这个知识点有比较固定的用法,同时比较容易理解。

我们现在就给上面的MyTextView来添加一个text属性

1,在res/values下创建 attrs.xml文件,并添加如下内容后:

name=“MyTextView” ===>一般自定义的属性name值与自定义的View保持一致

attr中的 attr name=“text”,这个name值就是自定义属性的名称了,在layout中使用这个自定义view,就可以使用这个属性名称来设置值。

format=“string” 是属性值的类型,总共有如下类型

474a7b4b067937467dee8e9b9f0de536.png

string:字符串

boolean:布尔

color:颜色

dimension:尺寸,可以带单位,比如长度通常为 dp,字体大小通常为 sp

enum:枚举,需要在 attr 标记中使用标记定义枚举值,例如 sex 作为性别,有两个枚举值:MALE 和 FEMALE。

flag:标识位,常见的 gravity 属性就是属性该类型,如图 6-7 所示。

float:浮点数

fraction:百分数,在动画资源、等标记中,fromX、fromY 等属性就是

fraction 类型的属性

integer:整数

reference : 引用, 引 用 另一个资源 , 比 如 android:paddingRight=@dimen/activity_horizontal_margin"就是引用了一个尺寸资源

2,属性在attrs.xml中定义好后,就可以在layout中使用了

首先要在加载该view的layout中的根view添加命名空间

xmlns:cyy=“http://schemas.android.com/apk/res-auto”

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#6600ff00"

cyy:text="Android 自定义组件学习"/>

3,在java代码中获取该属性值

public MyTextView(Context context, @Nullable AttributeSet attrs) {

super(context, attrs);

TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);

String customerText = typedArray.getString(R.styleable.MyTextView_text);

typedArray.recycle();//注意通过TypedArray得到数据后要调用其recycle方法。

}

这样我们就成功设置了一个自定义view属性,并且在layout中使用了这个属性,最后在java代码中读到设置的属性值了。

DONE

此系列后续持续更新。

本文地址:https://blog.csdn.net/u010869159/article/details/108123039

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值