关于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 ...
随机推荐
- JavaScript命名整理
.container { width: 720px; background: #fafafa; border: 2px dashed #999; padding: 10px; float: left ...
- 5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
跟踪标记:834 功能: 在64位的windows环境下,为SQL Server开启这个跟踪标记,那么SQL Server 会使用大页(Large pages)为内存缓冲区(buffer pool)分 ...
- SpringMvc文件资源防止被外链链接
/** * 文件下载防止文件被别的网站引用 * 直接访问会访问不了 * @Description: * @param type * 文件后缀名 * @param fileName * 文件名 * @p ...
- 简单了解下OSI七层模型的作用以及常见网络协议含义和所用端口
OSI七层模型及每层的作用 包括:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层物理层用来建立.维护.断开物理连接数据链路层建立逻辑链接.进行硬件地址寻址.差错校验等功能网络层进行逻辑地址 ...
- python实现汉诺塔移动
汉诺塔问题 汉诺塔是根据一个传说形成的一个问题.汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大 ...
- HDU - 2154 线性dp
思路:0表示A,1表示B,2表示C,d(i, j)表示在第j次时正好到达i. AC代码 #include <cstdio> #include <cmath> #include ...
- Shiro登录成功之后跳到指定URL
通常我们使用shiro,登录之后就会跳到我们上一次访问的URL,如果我们是直接访问登录页面的话,shiro就会根据我们配置的successUrl去重定向,如果我们没有配置successUrl的话,那么 ...
- Mybatis入门1
关于Mybatis的快速入门可以分为这样几步: 1.引入依赖或者引入jar包 2.编写全局配置文件(Mybatis-config.xml) <?xml version="1.0&quo ...
- 获得某个月的天数(java, mysql, oracle)
java方式: Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR,year); cal.set(Calendar.M ...
- 关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解
ios 关于intrinsic理解 最近由于项目的需要想给MBProgressHUD添加一个自定义的view, 结果花费了一两个小时也没添加上去,添加上去的view没有实际的大小,即使你给他设置了一个 ...