关于Android attrs 自定义属性的说明
写个自定义控件时经常要自定义一些自己的属性,平时用的都是那几个,今天就顺便一起总结一下这个东东吧~
一、定义:属性的定义都在attrs.xml文件里面;
二、读取:通过都是通过TypedArray去读取的,要获取TypedArray都是通过context.obtainStyledAttributes去获取的,它有几个重载方法,一般形如: TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomView);
三、使用:要使用自定义属性,得先在布局文件声明 xmlns:app="http://schemas.android.com/apk/res-auto" 当然,你不喜欢app也可以自定义名字,形如:xmlns:custom="http://schemas.android.com/apk/res/{packagename}" 。
四、自定义format的概览:
| format名称 | format类型 |
| reference |
|
| string |
|
| color |
|
| boolean |
|
| dimension |
|
| float |
表示浮点值 |
| integer |
|
| fraction |
|
| enum |
|
| flag |
|
五、具体说明:
5.1. reference:参考某一资源ID。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "cutom_id" format = "reference" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:cutom_id = "@drawable/图片ID"
/>
5.2. color:颜色值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_color" format = "color" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_color = "#00FF00"
/>
5.3. boolean:布尔值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_b" format = "boolean" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_b = "true"
/>
5.4. dimension:尺寸值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_width" format = "dimension" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_width="44dp"
/>
5.5. float:浮点值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_alpha" format = "float" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_alpha="0.5"
/>
5.6. integer:整型值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_number" format="integer" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_number="5"
/>
5.7. string:字符串。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_key" format = "string" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_key = "test_msg"
/>
5.8. fraction:百分数。
(1)属性定义:
<declare-styleable name="名称">
<attr name = "custom_percent" format = "fraction" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_percent = "200%"
/>
5.9. enum:枚举值。
(1)属性定义:
<declare-styleable name="名称">
<attr name="custom_orientation">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_orientation = "vertical"
/>
5.10. flag:位或运算。
(1)属性定义:
<declare-styleable name="名称">
<attr name="custom_mode">
<flag name = "mode_one" value = "0" />
<flag name = "mode_two" value = "1" />
<flag name = "mode_three" value = "2" />
</attr>
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_mode = "mode_one|mode_two|mode_three"
/>
5.11 注意: 属性定义时可以指定多种类型值。
(1)属性定义:
<declare-styleable name = "名称">
<attr name = "custom_background" format = "reference|color" />
</declare-styleable>
(2)属性使用:
<CustomView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
app:custom_background = "@drawable/图片ID|#00FF00"
/>
关于Android attrs 自定义属性的说明的更多相关文章
- Android中自定义属性(attrs.xml,TypedArray的使用)
做Android布局是件很享受的事,这得益于他良好的xml方式.使用xml可以快速有效的为软件定义界面.可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了.那么如何才能做到像官方 ...
- android开发:Android 中自定义属性(attr.xml,TypedArray)的使用
今天我们的教程是根据前面一节扩展进行的,如果你没有看,请点击 Android高手进阶教程(三)查看第三课,这样跟容易方便你的理解! 在xml 文件里定义控件的属性,我们已经习惯了android:att ...
- Android之自定义属性
有些时候会觉得Android中提供的控件不能满足项目的要求,所以就会常常去自定义控件.自定义控件就不免会自定义属性.自定义属性大致需要三个步骤:在XML文件中定义自定义属性的名称和数据类型.在布局中调 ...
- Android中自定义属性的使用
做Android布局是件很享受的事,这得益于他良好的xml方式.使用xml可以快速有效的为软件定义界面.可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了.那么如何才能做到像官方 ...
- Android attrs.xml文件中属性类型format值的格式
"reference" //引用 "color" //颜色 "boolean" //布尔值 "dimension" // ...
- Android中自定义属性attr.xml的格式详解
1. reference:参考某一资源ID. (1)属性定义: <declare-styleable name = "名称"> ...
- Android 自定义属性(attrs.xml,TypedArray)
做Android布局是件很享受的事,这得益于他良好的xml方式.使用xml可以快速有效的为软件定义界面.可是有时候我们总感觉官方定义的一些基本组 件不够用,自定义组件就不可避免了.那么如何才能做到像官 ...
- Android学习笔记_49_Android中自定义属性(attrs.xml,TypedArray的使用)
做Android布局是件很享受的事,这得益于他良好的xml方式.使用xml可以快速有效的为软件定义界面.可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了.那么如何才能做到像官方 ...
- [置顶]
xamarin android自定义标题栏(自定义属性、回调事件)
自定义控件的基本要求 这篇文章就当是自定义控件入门,看了几篇android关于自定义控件的文章,了解了一下,android自定义控件主要有3种方式: 自绘控件:继承View类,所展示的内容在OnDra ...
随机推荐
- Python之数据类型转换
平时我们在处理数据的时候,有些数据类型不是我们想要的,怎么办? 一.数据类型转换:要转换的类型(数据) 要把num01转换为整数:int(num01) 要把num01转换为浮点数:float(num0 ...
- PPPoE拨号流程
PPPoE(Point to Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)和会话(Session)两个阶段,发现阶段是无状 ...
- JavaScript 知识点
JS基础 页面由三部分组成: html:超文本标记语言,负责页面结构 css:层叠样式表,负责页面样式 js:轻量级的脚本语言,负责页面的动效和数据交互 小总结:结构,样式和行为,三者相分离 在htm ...
- 框架学习笔记之Maven简介和配置
一.什么是Maven?★Maven可翻译为“知识的积累”.“专家”.“内行”,它是一个跨平台的项目管理工具.★Maven提供了开发人员构建一个完整的生命周期框架,开发团队可以自动完成项目的基础工具建设 ...
- 接口-以PHP为例
<?php //使用程序模拟现实情况 //使用规范(方法/属性) interface iUSB { public function start(); public function stop() ...
- RMI远程服务调用
数据库:info.sql /* Navicat MySQL Data Transfer Source Server : yuanzhen Source Server Version : 50713 S ...
- spring oauth2 ,spring security整合oauth2.0 JdbcTokenStore实现 解决url-pattern .do .action
参考以下两个文章: http://www.cnblogs.com/0201zcr/p/5328847.html http://wwwcomy.iteye.com/blog/2230265 web.xm ...
- WinSock WSAEventSelect 模型总结
前言 本文配套代码:https://github.com/TTGuoying/WSAEventSelect-model 由于篇幅原因,本文假设你已经熟悉了利用Socket进行TCP/IP编程的基本原理 ...
- SpringCloud入门1-服务注册与发现(Eureka)
前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能.拖了半年之久的Spring Cloud学习就从今天开始了.中文教材 ...
- Luogu P1757 通天之分组背包
题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品相互冲突,现在,他想知道最大 ...