前言
在android自定义view的过程中,偶尔会涉及到设置外部资源的问题。那么今天就来讲讲自定义view属性的问题吧。
今天涉及的知识有:
- 创建 attrs.xml文件及其属性讲解
- 在自定义view中调用及获取资源
- 在xml中引用自定义控件及设置属性
- 需要注意的点。
大家可以在“demo大师”上搜索《番外篇2:自定义View属性全解》下载对应demo
先来张效果图:
一. 创建 attrs.xml文件及其属性讲解
attrs.xml一般位于项目 的 res/values 文件夹下,若此路径下没有attrs.xml文件,则需要创建。
创建流程是这样的:选中 res/values 文件夹 -----> 右键 -----> New ----->XML -----> Values XML File ,然后在弹出的输入框中输入文件名:attrs,点击finish即可。具体操作如下:
生成的 attrs.xml文件中代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>
接下来要讲的是就是attrs中标签和属性的知识。
1.1 declare-styleable 标签
一般一个 declare-styleable 标签对应具体的一个控件,一个<resources>标签中可以含一个或多个 declare-styleable,也即意味着不同的控件对应的资源设置都可以放置到一个 attrs.xml文件中。declare-styleable 标签使用类似如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="名称1">
</declare-styleable>
<declare-styleable name="名称2">
</declare-styleable>
</resources>
以上代码表示一个attrs.xml中有两组资源。declare-styleable 标签中的 “name="名称1” 标记着这个资源的唯一标志,当自定义控件要引用具体资源的时候,就要用到 name的值。这里我给 name设值为 mytest(name的值自己定义,但要唯一),表示这是一个 名为 “mytest”的一组资源,具体表示如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="mytest">
</declare-styleable>
</resources>
ok,一组资源的名称取了,现在要给这组资源设置具体的属性命名。属性标签用 attr,如下:
<declare-styleable name="mytest">
<attr name="" format=""/>
</declare-styleable>
attr 标签有两个属性,name 和 format,name表示属性名称,由你自己定义,注意最好保持唯一,format 表示属性类型。format类型种类如下: