2

当我尝试通过 setProgressbackground() 方法更改 SwipeRefresh-Progressbar 的颜色时,出现错误:

 E/AndroidRuntime﹕ FATAL EXCEPTION: main
 android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
        at android.content.res.Resources.getValue(Resources.java:1026)
        at android.content.res.Resources.getColor(Resources.java:756)
        at android.support.v4.widget.CircleImageView.setBackgroundColor(CircleImageView.java:118)
        at android.support.v4.widget.SwipeRefreshLayout.setProgressBackgroundColor(SwipeRefreshLayout.java:454)

我将这种方法称为 .setProgressBackgroundColor(getResources().getColor(R.color.mycolor))。颜色存在于资源文件中,并且在其他代码中效果很好。

然后我查看了 SwipeRefreshLayout 文件,发现方法是这样的:

  /**
 * Set the background color of the progress spinner disc.
 *
 * @param colorRes Resource id of the color.
 */
public void setProgressBackgroundColor(int colorRes) {
    mCircleView.setBackgroundColor(colorRes);
    mProgress.setBackgroundColor(getResources().getColor(colorRes));
}

对我来说,它似乎很奇怪,它一次只用 colorRes 整数调用 .setBackgroundColor() ,另一次用 getResources().getColor(colorRes) 调用。

我究竟做错了什么??

4

1 回答 1

0

的参数setBackgroundColor采用十六进制形式的颜色,而不是资源 id

颜色是从/res/colors.xml文件中加载的,可以这样调用:

setBackgroundColor(getResources().getColor(R.color.red));

包含/res/values/colors.xml以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF0000</color>
</resources>
于 2015-01-04T14:14:30.607 回答