我无法理解index变量对getColor()方法的作用。索引有什么作用,应该如何使用?
在当前程序中,如果将其保留为0、1、2之类的值,则颜色将始终为白色,而如果将其保留为诸如5的值,则它将为我选择的颜色。
//makes color white
TypedArray typedArray = obtainStyledAttributes(new int[]{R.attr.conversation_background});
int color = typedArray.getColor(1, Color.WHITE);
typedArray.recycle();
//makes color white
TypedArray typedArray = obtainStyledAttributes(new int[]{R.attr.conversation_background});
int color = typedArray.getColor(1, Color.RED);
typedArray.recycle();
//makes color white
TypedArray typedArray = obtainStyledAttributes(new int[]{R.attr.conversation_background});
int color = typedArray.getColor(5, Color.WHITE);
typedArray.recycle();
//makes color red
TypedArray typedArray = obtainStyledAttributes(new int[]{R.attr.conversation_background});
int color = typedArray.getColor(5, Color.RED);
typedArray.recycle();
答案 0 :(得分:0)
浏览代码看起来就像“您选择的颜色”,如果在数组中找不到类型,则将返回默认值。因此,在上一个示例中出现红色的原因是,它找不到要返回给它的属性的索引(5)的其他任何东西。
* @param index Index of attribute to retrieve. * @param defValue Value to return if the attribute is not defined or * not a resource.
答案 1 :(得分:0)
index
的 getColor(int index, int default)
自变量与输入数组中请求的属性的索引匹配。
您仅将1个项目数组传递给obtainStyledAttributes(int[])
,因此您应该通过使用索引0
获得所需的颜色。