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相关推荐

  1. Android自定义XML属性以及遇到的命名空间的问题

    转载请注明出处:http://www.cnblogs.com/kross/p/3458068.html 最近在做一些UI,很蠢很蠢的重复写了很多代码,比如一个自定义的UI Tab,由一个ImageVi ...

  2. android 自定义xml属性

    Android 自定义组件 Android 提供了非常精致的和非常强大的组件化模型,能够更加方便的构建UI,这些UI组件都是基于基本的layout类:View 和 ViewGroup. 部分能够用的w ...

  3. android自定义控件是一个 内部类 如何在xml中引用,android 自定义view属性

    android 自定义view属性 一个完美的自定义控件也可以添加xml来配置属性和风格.要实现这一点,可按照下列步骤来做: 1) 添加自定义属性到xml文件中 2) 在xml的中,指定属性的值 3) ...

  4. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 继承 BuilderSupport 抽象类 | 在 createNode 方法中获取节点名称、节点属性、节点值信息 )

    文章目录 一.继承 BuilderSupport 抽象类 二.在 createNode 方法中获取节点名称.节点属性.节点值信息 三.完整代码示例 1.MyBuilderSupport 生成器代码 2 ...

  5. android自定义组件属性,android自定义控件并添加属性的方法以及示例

    安卓系统为我们提供了丰富的控件,但是在实际项目中我们仍然需要重新通过布局来实现一些效果,比如我们需要一个上面图标,下面文字的button,类似于下面这样的: 最直接的解决办法是通过将imageview ...

  6. 安卓自定义view全解:初始化,onDraw函数,onMeasure函数,用户手势事件

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓自定义view全解. view类包含如下函数.可供重写. onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后 ...

  7. 安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例

    安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例,图片压缩处理逻辑 本文旨在介绍自定义View的实现 ...

  8. android自定义组合view,安卓自定义view之组合view

    效果图 image 实现方案 方案概述 通过在xml布局文件中组合控件,通过自定义view类加载xml文件,让外部通过xml属性或者方法来设置数据. 主要实现代码 组合view xml文件 xmlns ...

  9. 安卓自定义布局显示流式搜索记录

    安卓自定义布局显示流式搜索记录 老规矩,先上效果图(环境:API 30 , AS 4.0) OKK,开始动手! 第一步:自定义流式布局 XFlowLayout ,继承ViewGroup,然后重写 on ...

最新文章

  1. util包下的Date与sql包下的Date之间的转换
  2. Ubuntu16.04下Hadoop 2.7.3的安装与配置
  3. 获取IP地址和MAC地址
  4. 12位18Bb20计算公式c语言,C语言的一些简单题目,没有答案,哪位大神帮忙做一下!!!...
  5. 【DP】【记忆化搜索】NIKOLA(jzoj 1150)
  6. 读《程序员的SQL金典》[2]--函数
  7. Java学习从入门到精通[转]
  8. 简短介绍_中秋节的由来故事简短100字 中秋节的起源中秋节的来历介绍
  9. js或jsp 获取项目路径常用方法
  10. 最新最全的免费股票数据接口--沪深A股指数实时交易数据API接口(七)
  11. 基于多模态路标跟踪的紧耦合激光—视觉—惯导里程计(ICRA2021)
  12. 带电检测必要性_GIS的概念和定期局部放电检测的重要性
  13. android支持wifi11ad,不得不知道的WIFI标准:802.11ad、ah、af
  14. 计算机基础——4.1 数字通信入门
  15. EXCEL中文转英文首字母拼写
  16. Java生成“年月日“+流水号
  17. Linux C遍历文件夹
  18. Oracle9i中使用SYS_CONNECT_BY_PATH进行行列转换-
  19. Polygon zkEVM的pil-stark Fibonacci状态机初体验
  20. ev1527、pt2262等433/315MHZ芯片用stc单片机解码,含源程序

热门文章

  1. Android 好看的搜索界面,大赞Animation
  2. [算法系列] 深入递归本质+经典例题解析——如何逐步生成, 以此类推,步步为营
  3. 【业务整理】和家固话、智能组网、融合用户/套餐、5G权益包、中国移动经营分析系统(经分)
  4. 海马模拟器安装apicloud
  5. protobuf JsonStringToMessage 遇到bytes字段报错
  6. 4种方法教你如何用动态影像提升网页魅力
  7. 中兴智能视觉大数据在智能视觉司机疲劳监测管理平台的应用
  8. mamp pro mysql_mamp pro中mysql报错解决
  9. cmos-sensor的原理介绍
  10. 基于C++的酒店管理系统