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

前端之家收集整理的这篇文章主要介绍了android – 如何将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:

我已经尝试过一些事情,如子类化SwipeRefreshLayout代码和硬编码的颜色,但它绝对是一个黑客.必须有一种方法来引用活动中的一系列颜色来自定义它.

任何帮助将不胜感激!

android.content.res.Resources$NotFoundException: Resource ID #0x7f
<resources>
    <array name="swipeRefreshColors">
        <item>@color/pink</item>
        <item>@color/green</item>
    </array>
</resources>
<resources> <array name="swipeRefreshColors"> <item>@color/pink</item> <item>@color/green</item> </array> </resources>1
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.setColorSchemeResources(R.array.swipeRefreshColors);

正确代码

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

有两件我失踪的事情.

1)我需要指出我从我的array.xml文件获取了一个IntArray.这通过getResources().getIntArray(R.array.swipeRefreshColors)完成.

答案被删除,但感谢以前提出过的建议.

2)错误的关键部分是我不得不使用setColorSchemeColors而不是setColorSchemeResources.我猜在构建过程的某个时候,我在Array中的引用被转换为显式颜色值.

希望这可以帮助别人!

猜你在找的Android相关文章