TypedArray的getColor()方法中index参数的目的是什么?

时间:2019-04-08 23:40:12

标签: java android xml

我无法理解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();

2 个答案:

答案 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.

https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/android/content/res/TypedArray.java

答案 1 :(得分:0)

index

getColor(int index, int default)自变量与输入数组中请求的属性的索引匹配。

您仅将1个项目数组传递给obtainStyledAttributes(int[]),因此您应该通过使用索引0获得所需的颜色。