前言
在学习使用SwipeRefreshLayout 时,想设置一下下拉刷新中进度条颜色,结果发现一直没有效果。
What
首先看一下我的写法:
mSwipeRefreshLayout.setColorSchemeColors(R.color.colorAccent,R.color.colorPrimaryDark);
按理说,运行起来进度条颜色应该是我设置的红色-蓝色的,然而发现是那种灰灰的颜色。
最后在stackoverflow上找到了答案:点击跳转
How –原因分析
SwipeRefreshLayout 中设置进度条颜色有三种方法:
- setColorScheme - 已经被废弃了
- setColorSchemeColors - 当设置特定颜色值时使用
- setColorSchemeResources - 当引用颜色资源时使用
再来看一下,api中对setColorSchemeColors 和setColorSchemeResources的解释:
所以可以看到,如果用setColorSchemeColors方法,参数传的是颜色值,用setColorSchemeResources 参数传资源id。而setColorSchemeResources其实也是先通过资源id得到颜色值,最后调用setColorSchemeColors方法。
而我之前的写法:
mSwipeRefreshLayout.setColorSchemeColors(R.color.colorAccent,R.color.colorPrimaryDark);
传的直接是颜色资源id,所以是错的。
所以,最后正确的写法:
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimaryDark);
或者是:
mSwipeRefreshLayout.setColorSchemeColors(Color.parseColor("#FF4081"),Color.parseColor("#303F9F"));