原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_attrs.html

本文从实用角度说明Android自定义属性的基本使用流程,清晰明了,希望各位阅读后能够掌握Android自定义属性的一般用法,以便以后深入的研究。

首先,我们要树立一个观点,每一个自定义属性都和一个自定义控件对应,这两个是相关的。就像Android系统中提供的各个原生控件,它们都有自己对应的属性,这个由是Android实现的,控件只能使用自己的属性,不能使用别的控件对应的属性。因此,我们不能孤立的讲解自定义属性,需要结合对应的自定义控件(不清楚自定义控件的朋友只需要稍微查看一下自定义控件的概念即可)。每个自定义控件对应的属性是一个属性集,属性集的名字就是自定义控件的简短名字,属性和控件间的联系就是通过这个名字来实现的,接下来我们具体看下步骤:

自定义属性的学习步骤共有以下4步:步骤一:创建自定义控件;步骤二:创建attrs.xml文件;步骤三:设置自定义属性集内容;步骤四:使用自定义属性。

步骤一:创建自定义控件

首先我们创建一个测试用的自定义控件,就是最简单的那种:

public class MyView extends View {
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}

这个自定义控件叫做MyView。那我们要怎么定义这个自定义控件专属的属性集呢?看下面的步骤。

步骤二:创建attrs.xml文件

我们在res/values目录下,创建名为attrs.xml的文件。之后我们就要具体设置属性集的内容了。

步骤三:设置自定义属性集内容

我们首先看以下示例代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyView">
<attr name="CircleRadius" format="float" />
<attr name="type" format="boolean"/>
</declare-styleable>
</resources>

  

declare-styleable标签后边的name是MyView,这个名字就是我们自定义控件的名字,控件和属性就是通过这个名字联系到一起的,这个名字一定要和自定义控件对应,否则不起作用
 
attr标签中的是每个具体的属性值,比如上例中,定义了MyView的两个属性值,名字是CircleRadius和type,format代表格式,和每个属性值相对应,其值可以是以下几种:
  • reference:引用资源

  • string:字符串

  • Color:颜色

  • boolean:布尔值

  • dimension:尺寸值

  • float:浮点型

  • integer:整型

  • fraction:百分数

  • enum:枚举类型

  • flag:位或运算

和自定义控件对应的属性集设置好之后,接下来我们来具体使用一下。
 
步骤四:使用自定义属性
 
布局非常简单,就是在activity的布局中添加了一个我们刚刚自定义的控件。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:hehe="http://schemas.android.com/apk/res-auto"//此处设置命名空间
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.example.chironmy.qqui.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
hehe:type="true"
hehe:CircleRadius="1.0"
android:text="Hello World!" />
</RelativeLayout>

  

MyView控件的属性值type和CircleRadius就是我们为MyView控件专门设置的自定义属性,但是要注意这里的用法,其他属性前的命名空间都是android,而我们自定义属性前的命名空间是hehe,这个命名空间需要我们自己设置。此处使用的工具是Android Studio,可以自动生成hehe后边的具体命名空间的值,而在Eclipse中,这个值需要我们自己设置,一般设置为:xmlns:hehe="http://schemas.android.com/apk/res/com.example.mytest(简短包名)",注意两种开发工具命名空间的不同之处。 
 
好啦,对应于一个自定义空间的自定义属性集的学习我们就完成了,当然这只是最基本的使用步骤,满足了最基本的使用要求,需要深入的话还要继续研究,感谢大家阅读!

Android自定义属性简单使用说明的更多相关文章

  1. Android自定义属性

    上一篇讲解了Android自定义View,这篇来讲解一下Android自定义属性的使用,让你get新技能.希望我的分享能帮助到大家. 做Android布局是件很享受的事,这得益于他良好的xml方式.使 ...

  2. Oracle 中 union 和union all 的简单使用说明

    1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...

  3. Android 实现简单音乐播放器(二)

    在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...

  4. Android 实现简单音乐播放器(一)

    今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...

  5. Android课程---Android Studio简单设置

    Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...

  6. struts 标签<s:ierator>的简单使用说明

    struts 标签<s:ierator>的简单使用说明,只显示<s:ierator> 的前6条数据 <s:iterator value="lstVisitor& ...

  7. Android-深入理解android自定义属性(AttributeSet,TypedArray)

    属性 自定义属性,首先要定义出来属性,我们新建一个attrs.xml: <?xml version="1.0" encoding="utf-8"?> ...

  8. Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...

  9. Android实现简单拨号器

    Android实现简单拨号器 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 界面布局只有GridLayout和EditText两个控件,全部 ...

随机推荐

  1. InfoPath错误,此文档库已被重命名或删除

    在使用InfoPath发布表单,发布到SharePoint服务器报错,如下介绍: 环境:Windows 2012 DateCenter + Sql 2012 + SharePoint 2013 + O ...

  2. iOS 语音朗读

    //判断版本大于7.0    if ([[[UIDevice currentDevice] systemVersion] integerValue] >= 7.0) {        NSStr ...

  3. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  4. Unable to simultaneously satisfy constraints.

    在进行版本的迭代更新时,新功能需求需要对主页面的UI进行重新的布局,但是,报了错误,出了好多约束方面的问题: Unable to simultaneously satisfy constraints. ...

  5. nrm NPM源管理工具

    nrm NPM源管理工具 工具 前端 npm cnpm 今天经过同事介绍,发现一个好玩的东西——nrm(NPM registry manager) nrm 是一个可以快速切换NPM源的node插件.由 ...

  6. asp.net mvc 各版本区别

    MVC 6 ASP.NET MVC and Web API has been merged in to one. Dependency injection is inbuilt and part of ...

  7. Linux:常用命令

    文件压缩.解压 网络.进程 磁盘.文件使用情况 内存使用 1.文件压缩.解压 1)tar.gz文件解压: .bin.tar.gz 解压到指定目录: (指定的目录是存在的) .bin. 2)zip 文件 ...

  8. Surface在C++层的创建源码解析

    Surface在C++层的创建源码解析 源码为:android4.4.4 1.创建SurfaceComposerClient绘图客户端 // create a client to surfacefli ...

  9. 深度掌握SVG路径path的贝塞尔曲线指令

    一.数字.公式.函数.变量,哦,NO! 又又一次说起贝塞尔曲线(英语:Bézier curve,维基百科详尽中文释义戳这里),我最近在尝试实现复杂的矢量图形动画,发现对贝塞尔曲线的理解馒头那么厚,是完 ...

  10. [LeetCode] First Unique Character in a String 字符串第一个不同字符

    Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...