控件有很多属性,如android:id、android:layout_width、android:layout_height等,但是这些属性都是系统自带的属性。使用attrs.xml文件,可以自己定义属性。本文在Android自定义控件的基础上,用attrs.xml文件自己定义了属性。

首先,在values文件夹下,新建一个attrs.xml文件,文件内容如下:

其中,表明样式名称为CustomView,下面包含了两个自定义属性tColor和tSize,其中tColor是颜色(color)类的属性,tSize是尺寸(dimension)类的属性。

主窗体的布局文件如下:

xmlns:tools="http://schemas.android.com/tools"

xmlns:test="http://schemas.android.com/apk/res/com.hzhi.customview"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

android:id="@+id/cusView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

test:tColor="#00FFFF"

test:tSize="30dp"

>

定义了xmlns:test="http://schemas.android.com/apk/res/com.hzhi.customview"(其中com.hzhi.customview是包名),在控件属性中就可以增加test:tColor和test:tSize两个属性。

CustomView.java的构造函数:

// 构造函数

public CustomView(Context context, AttributeSet attrs) {

super(context, attrs);

// 获得TypedArray

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomView);

// 获得attrs.xml里面的属性值,格式为:名称_属性名,后面是默认值

int tColor = a.getColor(R.styleable.CustomView_tColor, Color.GREEN);

float tSize = a.getDimension(R.styleable.CustomView_tSize, 35);

p.setColor(tColor);

p.setTextSize(tSize);

// 返回一个绑定资源结束的信号给资源

a.recycle();

}

首先从R.styleable.CustomView获得了TypedArray变量,再用getColor(),getDimension()等方法获取相应的属性值,属性格式为“样式名_属性名”,属性后面的参数是默认值。获得属性值以后,就可以应用这些属性值。recycle()方法用于返回信号给资源(不懂什么意思)。

运行结果如下:

android 参数 attrs.xml,使用attrs.xml自定义属性相关推荐

  1. Android中读values/xml arrays attrs colors dimens string styles

    本文介绍在Android开发中关于资源文件的存储操作.对于Android资源也是非常重要的, 主要包括文本字符串(strings). 颜色(colors). 数组(arrays). 动画(anim). ...

  2. 安卓自定义XML属性attrs

    attrs看字面意思就是一组属性的集合,那attrs有什么用呢,在自定义View的时候,一般会自定义一些属性,通过构造方法中AttributeSet参数的封装,让我们能够获取到为View配置的属性.( ...

  3. Android中XML的命名空间、自定义属性

    命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 举个例子,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别这两名拥有相同名字的同学呢?这时候命名空间就派 ...

  4. Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用

    一. 在res/values 文件下定义一个attrs.xml 文件.代码如下: <?xml version="1.0" encoding="utf-8" ...

  5. Andriod: 在xml布局中使用自定义属性

    今天在看android froyo的launcher2 源码的时候,在launcher.xml中看到有这么一段代码: <com.android.launcher2.DragLayerxmlns: ...

  6. Android自定义View研究(四) -- 在XML中定义View

    如果在一直使用SetContentView(new HellwView(this)感觉总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的方便性性,这种感觉让人很不爽,呵呵,在这节 ...

  7. delphi读取xml中的内容property name传递参数_Python 进阶知识全篇-XML 解析

    什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 你可以通过本站学习 XML ...

  8. maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...

    Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法 问题发现 最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到 ...

  9. 【Android Developers Training】 81. 解析XML数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

最新文章

  1. 脚本-收集计算机信息
  2. 步进电机控制芯片_STK682/步进电机_STK682-010-E控制芯片 原创中文翻译
  3. PHP的十个高级技巧
  4. 使用JPA + Eclipselink操作PostgreSQL数据库
  5. python学习-模块和包
  6. 有关jquery checkbox获取checked的问题
  7. spring 事务隔离级别和传播行为_Spring事务传播性与隔离性实战
  8. birt project mysql_eclipse birt如何连接mysql数据库 配置文件
  9. 解决前后端交互Long类型精度丢失的问题
  10. Netbeans 安装和配置 C/C++ 支持
  11. 「leetcode」104559:求树的最大深度
  12. split函数python_python有split函数吗
  13. 这项技术曾应用于无人驾驶,荣耀10将其移植到手机上这样操作!
  14. paip.;论全文检索实现方式lucene Sphinx solr以及比较
  15. php集成square功能(使用square/connect)
  16. oracle如何实现累乘,由复合指标计算引起的oracle累乘
  17. 计算机语言点餐笑话,笑话:逗逼的程序员去点餐,结果·····
  18. 金彩教育:如何设计好主图
  19. 解决MySQL数据库登录报错原因以及修改MySQL数据库登录密码;
  20. XILINX FPGA 7系之 Distribute RAM

热门文章

  1. Problem E: 校庆
  2. C++ 中export 关键字的尴尬处境
  3. 用C++11的std::async代替线程的创建
  4. 相机标定原理和opencv代码解析
  5. 阿里云熊鹰:基于融合、协同系统的边缘云原生架构演进和实践
  6. Pod在多可用区worker节点上的高可用部署 1
  7. PostgreSQL 查询涉及分区表过多导致的性能问题 - 性能诊断与优化(大量BIND, spin lock, SLEEP进程)
  8. Gartner最新报告:阿里云计算、存储、网络、安全均获得最高分
  9. 看穿这些套路,你的kubernetes会更香
  10. 从移动广告业务“长出”的新增长点,汇量科技进军云服务