android--SwipeRefreshLayout 设置下拉刷新进度条颜色变化没效果

来源:互联网 发布:数据线线芯 编辑:程序博客网 时间:2024/05/16 01:46

前言

在学习使用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"));
0 0
原创粉丝点击