安卓自定义XML属性attrs
attrs看字面意思就是一组属性的集合,那attrs有什么用呢,在自定义View的时候,一般会自定义一些属性,通过构造方法中AttributeSet参数的封装,让我们能够获取到为View配置的属性。(自定义属性)
1.定义对应的属性
在values文件夹下新建一个attar_custom.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 自定义控件的名称 -->
<declare-styleable name="StrokeTextView">
<!-- 自定义的属性名称 和对应的单位 -->
<attr name="outerColor"format="color|reference" />
<attr name="innnerColor" format="color|reference" />
</declare-styleable>
</resources>
format表示这个属性的值的类型,类型有以下几种:
1.reference:引用资源(参考某一资源ID)
2.string:字符串
3.Color:颜色
4.dimension:尺寸值
5.fraction:百分数
6.enum:枚举类型
7.flag:位或运算
8. fraction:百分数。
(1)属性定义:
[html] view plaincopyprint?
<declare-styleable name="RotateDrawable">
<attr format="fraction" name="pivotX" />
<attr format="fraction" name="pivotY" />
</declare-styleable>
(2)属性使用:
<rotate
android:pivotX="200%"
android:pivotY="300%" />
9. enum:枚举值。
(1)属性定义:
<declare-styleable name="名称">
<attr name="orientation">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
</declare-styleable>
(2)属性使用:
<LinearLayout
android:orientation="vertical" >
</LinearLayout>
10. flag:位或运算。
(1)属性定义:
<declare-styleable name="名称">
<attr name="windowSoftInputMode">
<flag name="stateUnspecified" value="0" />
<flag name="stateUnchanged" value="1" />
<flag name="stateHidden" value="2" />
<flag name="stateAlwaysHidden" value="3" />
<flag name="stateVisible" value="4" />
<flag name="stateAlwaysVisible" value="5" />
<flag name="adjustUnspecified" value="0x00" />
<flag name="adjustResize" value="0x10" />
<flag name="adjustPan" value="0x20" />
<flag name="adjustNothing" value="0x30" />
</attr>
</declare-styleable>
(2)属性使用:
<activity
android:windowSoftInputMode="stateUnspecified
| stateUnchanged | stateHidden" >
</activity>
注意:属性定义时可以指定多种类型值:
(1)属性定义:
[html] view plaincopyprint?
<declare-styleable name="名称">
<attr format="reference|color" name="background" />
</declare-styleable>
(2)属性使用:
[html] view plaincopyprint?
<ImageView
android:layout_width="42dip"
android:layout_height="42dip"
android:background="@drawable/图片ID|#00FF00" />
2.在自定义代码里写
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.StrokeTextView);
Int outerColor = a.getColor(R.styleable.StrokeTextView_outerColor,
Color.BLUE);
Int innnerColor= a.getColor(R.styleable.StrokeTextView_innnerColor,
Color.Green);
3.在XML中定义自定义属性
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
通常我们在布局文件中使用自定义属性的时候会这样写<com.example.demo.StrokeTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:textSize="28sp"
app:outerColor="#000000" 调用自定义属性
app:innnerColor="#ffffff" 调用自定义属性
android:layout_centerInParent="true"/>
注意,自定义的XML属性必须给自定义的控件使用。
属性优先级: 在构造函数中
Attribute attrs:从xml中定义的参数
int defStyleAttr :主题中优先级最高的属性
int detStyleRes:优先级较低的内置于View的系统style
如果defStyleAttr有效(defStyleAttr不为0或者有定义defStyleAttr),则defStyleRes无效;如果defStyleAttr无效,则defStyleRes有效。defStyleAttr的优先级比defStyleRes高。
属性优先级(1>2>3>4):
1、直接在layout.xml文件中添加的属性
2、在style中添加的属性
3、defStyleAttr或defStyleRes(二者不会同时有效)
4、theme中添加的属性
安卓自定义XML属性attrs相关推荐
- Android自定义XML属性以及遇到的命名空间的问题
转载请注明出处:http://www.cnblogs.com/kross/p/3458068.html 最近在做一些UI,很蠢很蠢的重复写了很多代码,比如一个自定义的UI Tab,由一个ImageVi ...
- android 自定义xml属性
Android 自定义组件 Android 提供了非常精致的和非常强大的组件化模型,能够更加方便的构建UI,这些UI组件都是基于基本的layout类:View 和 ViewGroup. 部分能够用的w ...
- android自定义控件是一个 内部类 如何在xml中引用,android 自定义view属性
android 自定义view属性 一个完美的自定义控件也可以添加xml来配置属性和风格.要实现这一点,可按照下列步骤来做: 1) 添加自定义属性到xml文件中 2) 在xml的中,指定属性的值 3) ...
- 【Groovy】自定义 Xml 生成器 BuilderSupport ( 继承 BuilderSupport 抽象类 | 在 createNode 方法中获取节点名称、节点属性、节点值信息 )
文章目录 一.继承 BuilderSupport 抽象类 二.在 createNode 方法中获取节点名称.节点属性.节点值信息 三.完整代码示例 1.MyBuilderSupport 生成器代码 2 ...
- android自定义组件属性,android自定义控件并添加属性的方法以及示例
安卓系统为我们提供了丰富的控件,但是在实际项目中我们仍然需要重新通过布局来实现一些效果,比如我们需要一个上面图标,下面文字的button,类似于下面这样的: 最直接的解决办法是通过将imageview ...
- 安卓自定义view全解:初始化,onDraw函数,onMeasure函数,用户手势事件
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓自定义view全解. view类包含如下函数.可供重写. onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后 ...
- 安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例
安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例,图片压缩处理逻辑 本文旨在介绍自定义View的实现 ...
- android自定义组合view,安卓自定义view之组合view
效果图 image 实现方案 方案概述 通过在xml布局文件中组合控件,通过自定义view类加载xml文件,让外部通过xml属性或者方法来设置数据. 主要实现代码 组合view xml文件 xmlns ...
- 安卓自定义布局显示流式搜索记录
安卓自定义布局显示流式搜索记录 老规矩,先上效果图(环境:API 30 , AS 4.0) OKK,开始动手! 第一步:自定义流式布局 XFlowLayout ,继承ViewGroup,然后重写 on ...
最新文章
- util包下的Date与sql包下的Date之间的转换
- Ubuntu16.04下Hadoop 2.7.3的安装与配置
- 获取IP地址和MAC地址
- 12位18Bb20计算公式c语言,C语言的一些简单题目,没有答案,哪位大神帮忙做一下!!!...
- 【DP】【记忆化搜索】NIKOLA(jzoj 1150)
- 读《程序员的SQL金典》[2]--函数
- Java学习从入门到精通[转]
- 简短介绍_中秋节的由来故事简短100字 中秋节的起源中秋节的来历介绍
- js或jsp 获取项目路径常用方法
- 最新最全的免费股票数据接口--沪深A股指数实时交易数据API接口(七)
- 基于多模态路标跟踪的紧耦合激光—视觉—惯导里程计(ICRA2021)
- 带电检测必要性_GIS的概念和定期局部放电检测的重要性
- android支持wifi11ad,不得不知道的WIFI标准:802.11ad、ah、af
- 计算机基础——4.1 数字通信入门
- EXCEL中文转英文首字母拼写
- Java生成“年月日“+流水号
- Linux C遍历文件夹
- Oracle9i中使用SYS_CONNECT_BY_PATH进行行列转换-
- Polygon zkEVM的pil-stark Fibonacci状态机初体验
- ev1527、pt2262等433/315MHZ芯片用stc单片机解码,含源程序
热门文章
- Android 好看的搜索界面,大赞Animation
- [算法系列] 深入递归本质+经典例题解析——如何逐步生成, 以此类推,步步为营
- 【业务整理】和家固话、智能组网、融合用户/套餐、5G权益包、中国移动经营分析系统(经分)
- 海马模拟器安装apicloud
- protobuf JsonStringToMessage 遇到bytes字段报错
- 4种方法教你如何用动态影像提升网页魅力
- 中兴智能视觉大数据在智能视觉司机疲劳监测管理平台的应用
- mamp pro mysql_mamp pro中mysql报错解决
- cmos-sensor的原理介绍
- 基于C++的酒店管理系统