android 参数 attrs.xml,使用attrs.xml自定义属性
控件有很多属性,如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自定义属性相关推荐
- Android中读values/xml arrays attrs colors dimens string styles
本文介绍在Android开发中关于资源文件的存储操作.对于Android资源也是非常重要的, 主要包括文本字符串(strings). 颜色(colors). 数组(arrays). 动画(anim). ...
- 安卓自定义XML属性attrs
attrs看字面意思就是一组属性的集合,那attrs有什么用呢,在自定义View的时候,一般会自定义一些属性,通过构造方法中AttributeSet参数的封装,让我们能够获取到为View配置的属性.( ...
- Android中XML的命名空间、自定义属性
命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 举个例子,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别这两名拥有相同名字的同学呢?这时候命名空间就派 ...
- Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用
一. 在res/values 文件下定义一个attrs.xml 文件.代码如下: <?xml version="1.0" encoding="utf-8" ...
- Andriod: 在xml布局中使用自定义属性
今天在看android froyo的launcher2 源码的时候,在launcher.xml中看到有这么一段代码: <com.android.launcher2.DragLayerxmlns: ...
- Android自定义View研究(四) -- 在XML中定义View
如果在一直使用SetContentView(new HellwView(this)感觉总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的方便性性,这种感觉让人很不爽,呵呵,在这节 ...
- delphi读取xml中的内容property name传递参数_Python 进阶知识全篇-XML 解析
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 你可以通过本站学习 XML ...
- maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...
Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法 问题发现 最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到 ...
- 【Android Developers Training】 81. 解析XML数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
最新文章
- 脚本-收集计算机信息
- 步进电机控制芯片_STK682/步进电机_STK682-010-E控制芯片 原创中文翻译
- PHP的十个高级技巧
- 使用JPA + Eclipselink操作PostgreSQL数据库
- python学习-模块和包
- 有关jquery checkbox获取checked的问题
- spring 事务隔离级别和传播行为_Spring事务传播性与隔离性实战
- birt project mysql_eclipse birt如何连接mysql数据库 配置文件
- 解决前后端交互Long类型精度丢失的问题
- Netbeans 安装和配置 C/C++ 支持
- 「leetcode」104559:求树的最大深度
- split函数python_python有split函数吗
- 这项技术曾应用于无人驾驶,荣耀10将其移植到手机上这样操作!
- paip.;论全文检索实现方式lucene Sphinx solr以及比较
- php集成square功能(使用square/connect)
- oracle如何实现累乘,由复合指标计算引起的oracle累乘
- 计算机语言点餐笑话,笑话:逗逼的程序员去点餐,结果·····
- 金彩教育:如何设计好主图
- 解决MySQL数据库登录报错原因以及修改MySQL数据库登录密码;
- XILINX FPGA 7系之 Distribute RAM
热门文章
- Problem E: 校庆
- C++ 中export 关键字的尴尬处境
- 用C++11的std::async代替线程的创建
- 相机标定原理和opencv代码解析
- 阿里云熊鹰:基于融合、协同系统的边缘云原生架构演进和实践
- Pod在多可用区worker节点上的高可用部署 1
- PostgreSQL 查询涉及分区表过多导致的性能问题 - 性能诊断与优化(大量BIND, spin lock, SLEEP进程)
- Gartner最新报告:阿里云计算、存储、网络、安全均获得最高分
- 看穿这些套路,你的kubernetes会更香
- 从移动广告业务“长出”的新增长点,汇量科技进军云服务