obtainStyleAttributes()忽略我试图检索的某些属性

时间:2012-12-25 04:34:59

标签: android attributes android-theme android-styles

我正在尝试使用obtainStyleAttributes()检索一组样式属性,但我只检索了前几个项目,而其他所有项目都是默认的。我确认我的样式包含这些属性的非默认值。这是为什么?

1 个答案:

答案 0 :(得分:0)

我在这个问题上浪费了3个小时,所以我希望这会节省一些时间。

public TypedArray obtainStyledAttributes(AttributeSet set,int [] attrs,int defStyleAttr,int defStyleRes) 第二个参数attrs必须以严格增加的数字顺序包含属性标识符,否则属性值将不会被解析,并且调用将无声地失败,就好像该属性不存在一样。

这是没有记录的,我可以看到,我花了很长时间才弄清楚出了什么问题。

所以,假设我有2个属性,ID = 1的ATTR1和ID = 2的ATTR2(在现实生活中,这些数字要大得多,并由资源编译器分配)。

如果我想在一次调用中检索两个属性的值,我必须写:

int [] attributes = {ATTR1,ATTR2};

如果相反,我会交换它们,只检索ATTR2,而ATTR1则是默认值。