关于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 ...
随机推荐
- 初识Vue——模板语法
一.插值 1.文本 数据绑定最常见的形式是使用双大括号({{ }}--"Mustache"语法)的文本插值 <div class="mustache"& ...
- IntentService源码
原文地址IntentService源码分析 @Override public void onCreate() { super.onCreate(); HandlerThread thread = ne ...
- 合唱团 (线性dp)
题意:有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积 ...
- HDU - 1248 寒冰王座 数学or暴力枚举
思路: 1.暴力枚举每种面值的张数,将可以花光的钱记录下来.每次判断n是否能够用光,能则输出0,不能则向更少金额寻找是否有能够花光的.时间复杂度O(n) 2.350 = 200 + 150,买350的 ...
- Java线程的六种状态
java线程有很多种状态,最主要的有六种,被创建.运行.睡眠.等待.阻塞以及消亡六种,也有很多归结为5种,把睡眠以及等待归结为冻结: 被创建:就是线程被创建,就是new thread()之后就是创建一 ...
- Ubuntu17.10下启动Rancher
1.安装Docker: 获取最新的docker安装包 wget -qO- https://get.docker.com/ | sh 2.启动docker后台服务: service docker sta ...
- Docker资源网站收藏
Docker资源 Docker官方英文资源: docker官网:http://www.docker.com Docker windows入门:https://docs.docker.com/windo ...
- 64位Kali无法顺利执行pwn1问题的解决方案
问题描述 环境:VMware Fusion + kali-linux-2018.1-amd64.iso 问题:在Terminal利用./pwn1执行pwn1会出现 bash: ./pwn1:没 ...
- java 集合框架(十四)Queue
一.概述 Queue一种队列结构集合,用来存储将要进行处理的元素.通常以FIFO的方式排序元素,但这并不是必须的.比如优先度队列就是一个例外,它是以元素的值来排序.但无论怎样,每个Queue的实现都必 ...
- 6.3 x86处理器如何处理MSI-X中断请求
PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字段包含的数据.只是MSI-X中断机制为了支持更多的中断 ...