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()方法用于返回信号给资源(不懂什么意思)。

运行结果如下:

d6ab820b15cff7f2d8246b6fd1eec739.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直面PHP微服务架构挑战

在4月20日的阿里云栖开发者沙龙PHP技术专场上,云智慧Technical VP高驰涛为大家介绍了微服务的前世今生,分享了微服务架构实践中所面对的诸多挑战以及相应的应对策略。 本次直播视频精彩回顾,戳这里! 直播回顾:https://…

5亿整数的大文件,怎么排序 ?面试被问傻!

来源 | 程序员追风编辑 | Carol出品| CSDN云计算(ID:CSDNcloud)最近一家公司,面试官一上来,就问了我这么一个问题,我一脸懵逼,决定记录一下。问题给你1个文件bigdata,大小4663M&…

RabbitMQ 的延时队列和镜像队列原理与实战

在阿里云栖开发者沙龙PHP技术专场上,掌阅资深后端工程师、掘金小测《Redis深度历险》作者钱文品为大家介绍了RabbitMQ的延时队列和镜像队列的原理与实践,重点比较了RabbitMQ提供的消息可靠与不可靠模式,同时介绍了生产环境下如何使用RabbitMQ…

深入浅出网络编程与Swoole内核

在阿里云PHP技术沙龙专场中,阿里云邀请到php-nsq作者,pecl、Swoole开发组成员吴振宇分享了Swoole进程模型的原理与Swoole协程实现的原理。并结合具体开发案例讲解了Swoole在网络编程中的应用。 本次直播视频精彩回顾,戳这里! 直播…

Spark大数据分布式机器学习处理实战 | 博文精选

作者| 数挖小飞飞编辑 | Carol出品| CSDN云计算(ID:CSDNcloud)Spark是一种大规模、快速计算的集群平台,本文试图通过学习Spark官网的实战演练笔记提升作者实操能力以及展现Spark的精彩之处。本文的参考配置为:Deepin 1…

五四,阿里巴巴新青年了解下?

今天,橙子挖掘了几位程序员小哥的故事,他们是淘宝技术节上涌现出的“高手”。为了追求极致,代码也能成为一种艺术,看完之后也许你会对技术人有完全不同的认识。 1 伯灵:“技术作品代表我对技术的态度:解决…

多场景下的AI疫情防控“天网”:解读云边端联动下的全栈 AI 技术

在全民抗疫的特殊时期下,伴随着春运返潮,企业陆续复工,从重点防控的机场、火车站,到学校、企业、社区等密集型场所,都是不能忽视的地点。除了人工逐一测量体温排查外,我们还发现,在人员复杂、流…

Twitter 宣布抛弃 Mesos,全面转向Kubernetes

美国西部时间 5 月 2 日下午 7 点,Twitter 公司在旧金山总部举行了一次技术发布会兼 Meetup。会上,Twitter 计算平台(Twitter Computing Platform)产品与技术负责人 David McLaughlin 正式宣布,Twitter 的基础而设施将…

Guns整合log4j2

文章目录一、排除内置logback1. 删除logback.xml2. 排除内置的logback二、整合log4j22.1. 依赖log4j22.2. 配置文件中配置2.3. log4j2日志文件2.4. 效果图2.5. 输出要素Sringboot 开源框架默认logback日志框架,Guns开源项目也是用logback日志框架 一、排除内置logba…

蚂蚁金服生产级 Raft 算法库存储模块剖析 | SOFAJRaft 实现原理

前言 SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景。 SOFAJRaft 存储模块分为: Log 存储记录 Raft 配置变更和用户提交任务日志;Meta 存储即元信息存储记录…

android studio 调用c++,android studio配置opencv,调用c++,处理图像

一、下载安卓的opencv sdk这里下载release版的,下载后解压二、新建工程三、编写界面布局(工程等下上传到github)四、添加Module,Android Studio菜单-->File-->New-->Import Module添加完成五、加入依赖此时Sync报错,需要修改文件修改…

Guns mybatisplus只输出sql不输出结果集

文章目录1. yml配置2. 效果图今天给大家讲一下在数据量特别大的场景下,Guns开源项目怎样实现只输出sql不输出结果集列表。 1. yml配置 mybatis-plus:typeAliasesPackage: cn.stylefeng.guns.modular.system.modelmapper-locations:- classpath*:cn/stylefeng/guns/…

AWS还是Firebase?在移动应用后端应该使用哪个?

作者| Dhananjay Trivedi翻译 | 天道酬勤,编辑 | Carol出品| CSDN云计算(ID:CSDNcloud)我们将按以下顺序比较这两种服务:它们有什么共同点?如何将它们与你的前端集成?它们的优势。它们的价格。创…

对话鲁直:蚂蚁金服中间件的开源头羊 | 穿山甲专访

谈话中,鲁直反问的“你为什么不开源?”这句话让我印象深刻。-- 老王 二月初春,在西子湖畔的细雨中,我拜访了蚂蚁金服中间件团队,和 SOFA 技术负责人鲁直做了一次深入交谈,更妙的是,鲁直也是负责…

与时间赛跑:微盟的数据恢复为什么需要这么长时间

作者| 茹炳晟责编 | Carol出品| CSDN云计算(ID:CSDNcloud)微盟“删库跑路“事件已经过去好几天了,据悉,微盟的服务已经全部恢复,对于新用户,已经能够正常开始所有相关的业务活动了,但…

阿里开发者招聘节 | 面试题08:NAS(Network Attached Storage)协议NFS和SMB相关问题

为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次将陆续放出(面试题官方参考答案将在专辑结束后统一汇总分享,点此进入答题并围观他…

android studio n3710,英特尔奔腾N3710性能跑分和评测 | ZMMOO

英特尔奔腾N3710 是针对入门级笔记本电脑,它的频率为1.1- 2.56 GHz。由于采用三栅极晶体管的新型14纳米低功耗工艺(P1273),与其前代Bay Trail(例如奔腾 N3520)相比,能效得到了显着提升 。除了CPU内核之外,SoC还提供支持DirectX 11…

淘宝千万级并发架构的十四次演进

责编 | Carol来源 | 架构师技术联盟概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原…

linux 15秒 搭建VSFTPD文件服务器

文章目录1. 在线安装2. 创建用户3. 限制用户活动范围4. 添加用户管制5. 关闭匿名访问6. 编辑一个安全文件7. 重新启动vsftpd8. 客户端测试9. 本机测试10. 再次本机测试1. 在线安装 yum install vsftpd2. 创建用户 useradd ftpuser passwd ftpuser3. 限制用户活动范围 vim vs…

阿里开源!轻量级深度学习端侧推理引擎 MNN

AI科学家贾扬清如此评价道:“与 Tensorflow、Caffe2 等同时覆盖训练和推理的通用框架相比,MNN 更注重在推理时的加速和优化,解决在模型部署的阶段的效率问题,从而在移动端更高效地实现模型背后的业务。这和服务器端 TensorRT 等推…