作者:怎么找个名字这么费劲 | 来源:互联网 | 2023-05-25 12:15
如何解决《如何将array.xml中的颜色资源ID的int数组传递给SwipeRefreshLayout.setColorSchemeResources》经验,为你挑选了1个好方法。
我已经安装了Android的SwipeRefreshLayout,并尝试自定义所有拉动中的颜色以刷新整个应用程序.为了遵循DRY原则,我尝试将所需的颜色移动到array.xml,如下所示:
- @color/pink
- @color/green
但是,当我尝试将它们导入滑动刷新时:
swipeRefreshLayout.setColorSchemeResources(R.array.swipeRefreshColors);
我得到一个Resources $ 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中引用一系列颜色来自定义它.
任何帮助将不胜感激!
1> Andrew Cross..:
结果我错过了两个关键部分.
错误的代码:
swipeRefreshLayout.setColorSchemeResources(R.array.swipeRefreshColors);
正确的代码:
swipeRefreshLayout.setColorSchemeColors(getResources().getIntArray(R.array.swipeRefreshColors));
我失踪了两件事.
1)我需要表明我IntArray
从我的array.xml文件中获取了一个.这是通过完成的getResources().getIntArray(R.array.swipeRefreshColors)
.
答案被删除了,但多亏了之前提出这个问题的人.
2)错误的关键部分是我必须使用setColorSchemeColors
而不是setColorSchemeResources
.我想在构建过程中的某些时候,我在Array中的引用被转换为显式颜色值.
希望这可以帮助别人!