我有一个具有自定义属性的自定义布局,其中一个是颜色。我有用户设置此属性为一种颜色(不是一种常见的颜色),我使用TypedArray的getColor方法来检索这种颜色并将其设置为一个整数(如果我打印出这个int,它是负的)。比方说,我做这样的事情:Android - 从自定义属性获取的颜色返回与colors.xml中相同颜色不同的值
int myColor;
TypedArray ta = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, 0, 0);
myColor = ta.getColor(R.styleable.MyView_myColor, -1);
if (myColor == R.color.special_shade_of_yellow) {
mySpecialMethod()
}
现在让我们假设一个用户设置要R.color.special_shade_of_yellow属性。但是,if块永远不会经过,所以mySpecialMethod()永远不会被调用。出于某种原因,myColor是负值,而R.color.special_shade_of_yellow不是。他们为什么不返回相同的值?谢谢!
哇,很高兴知道!这是修复。非常感谢! – Elise