如何将int数组中的颜色资源id从array.xml传递给SwipeRefreshLayout.setColorSchemeResources

我有Android的SwipeRefreshLayout工作,并试图自定义跨所有拉的颜色刷新整个应用程序。 为了遵循DRY原则,我试着将所需的颜色移动到array.xml中,如下所示:

<resources> <array name="swipeRefreshColors"> <item>@color/pink</item> <item>@color/green</item> </array> </resources> 

但是,当我尝试将它们导入刷卡刷新:

 swipeRefreshLayout.setColorSchemeResources(R.array.swipeRefreshColors); 

我得到一个资源$ NotFoundException:

 android.content.res.Resources$NotFoundException: Resource ID #0x7f060001 at android.content.res.Resources.getValue(Resources.java:1233) at android.content.res.Resources.getColor(Resources.java:887) at android.support.v4.widget.SwipeRefreshLayout.setColorSchemeResources(SwipeRefreshLayout.java:477) 

我已经尝试了一些东西,例如子类化SwipeRefreshLayout代码和硬编码颜色,但是这绝对是一个黑客。 必须有一种方法来引用Activity中的一组颜色来自定义它。

任何帮助将不胜感激!

Solutions Collecting From Web of "如何将int数组中的颜色资源id从array.xml传递给SwipeRefreshLayout.setColorSchemeResources"

原来我错过了两个关键部分。

错误代码:

 swipeRefreshLayout.setColorSchemeResources(R.array.swipeRefreshColors); 

正确的代码:

 swipeRefreshLayout.setColorSchemeColors(getResources().getIntArray(R.array.swipeRefreshColors)); 

有两件事我错过了。

1)我需要表明我正在从我的array.xml文件中获取一个IntArray 。 这是通过getResources().getIntArray(R.array.swipeRefreshColors)

答案被删除了,但是多亏了谁以前的build议。

2)错误的关键是我不得不使用setColorSchemeColors而不是setColorSchemeResources 。 我想在构build过程中的某些时候,我在数组中的引用被转换为显式的颜色值。

希望这可以帮助别人!