我正在尝试使用obtainStyleAttributes() 检索一组样式属性,但我只检索了前几个项目,而其他所有项目都被默认了。我确认我的样式包含这些属性的非默认值。为什么是这样?
问问题
102 次
1 回答
0
我在这个问题上浪费了 3 个小时,所以我希望这能节省一些时间。
public TypedArray gainStyledAttributes (AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) 第二个参数 attrs 必须包含严格递增的数字顺序的属性标识符,否则属性值将无法解析,调用将静默失败,因为如果该属性不存在。
这不是我可以看到的记录,我花了很长时间才弄清楚出了什么问题。
因此,假设我有 2 个属性, ID = 1 的 ATTR1 和 ID = 2 的 ATTR2 (在现实生活中,这些数字要大得多,并且由资源编译器分配)。
如果我想在一次调用中检索两个属性的值,我必须编写:
int[] 属性 = { ATTR1, ATTR2 };
如果相反,我将交换它们,则只会检索 ATTR2,而 ATTR1 将是默认值。
于 2012-12-25T04:34:59.257 回答