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