android动态设置attr值,Android attr属性的定义/读取/出错/使用

有人认为它可以直接通过在代码类中进行set...(),然后去改变View中的字体大小,颜色等等属性。

那如果要直接在引用布局Layout对其进行设置属性该怎么办呢?

这就是本文重点要介绍的内容:自定义attr属性与读取

一、在res/values 文件下定义一个attrs.xml 文件.代码如下:

注意: format有以下几种类型及读取:

序号

format取值

format说明

format读取

1

reference

资源ID

attrs.getResourceId(R.styleable.View名称_attr名称,  默认值);

2

color

颜色值

attrs.getColor(R.styleable.View名称_attr名称, 默认值);

3

boolean

布尔值

attrs.getBoolean(R.styleable.View名称_attr名称, 默认值);

4

dimension

尺寸值

attrs.getDimension(R.styleable.View名称_attr名称, 默认值);

5

float

浮点值

attrs.getFloat(R.styleable.View名称_attr名称, 默认值);

6

integer

整型值

attrs.getInteger(R.styleable.View名称_attr名称, 默认值);

7

string

字符串

attrs.getString(R.styleable.View名称_attr名称);

8

fraction

百分比(%)

attrs.getString(R.styleable.View名称_attr名称);

9

enum

枚举值

attrs.getInt(R.styleable.View名称_attr名称, 默认值);

10

flag

位或运算

attrs.getInt(R.styleable.View名称_attr名称, 默认值);

二、如果在attr中不同View引用相同属性名字时出现错误的解决方法

(1)引用代码(两个都引用了textColor会出错):

(2)错误提示:

Error:Execution failed for task ':包路径:mergeReleaseResources'.

> 本地包路径\src\main\res\values\attrs.xml: Error: Found item Attr/textColor more than one time(3)解决方式:

三、enum/flag的特殊之处

(1)下面就列举flag(enum也类似),先看代码:

(2)这里是我在自定义一个EditText的时候,为了设置输入内容的类型:

调用方法:

setInputType(attrs.getInt(R.styleable.View名称_inputType, 0));

public void setInputType(int type) {

switch (type) {

case 0:

mEditText.setInputType(InputType.TYPE_CLASS_TEXT);

break;

case 1:

mEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);

break;

case 2:

mEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

break;

case 3:

mEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

break;

case 4:

mEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

break;

}

}

四、属性的定义与使用

(1)属性定义:

(2)属性使用:

android:layout_width = "42dip"

android:layout_height = "42dip"

android:itemTextColor = "#00FF00"/>

这里推荐:

attr自定义标签详解文章,感觉这里对attr标签在布局中的用法写的蛮好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值