网上找了一些解决方式,如下两种:
1、设置偏移量
swipeRefreshLayout.setProgressViewOffset(false, 0,
CommonUtil.dip2px(context, 24));
swipeRefreshLayout.setRefreshing(true);
2、
查看源码,可以知道,该方法内部主要是调用了setTargetOffsetTopAndBottom()方法调整进度条的位置来显示的。在没出控件完成onLayout方法之前,位置数据都是不准确的,所以显示不出来很正常。
要解决这个问题很简单,把咱们要做的这个事情需要通过post(Runnable runnable)方法放到UI线程排队执行,否则,参数不对,自然显示不出来。
mSwipeRefreshLayout.post(new Runnable()
{
@Override
public void run()
{
mSwipeRefreshLayout.setRefreshing(true);
}
});
试了两种效果后并不起效果。
3、后来发现在cardview 的间隙中能够看到被遮盖的swipeRefreshLayout。之后查看代码,发现是给RecycleView设置了
android:translationZ="@dimen/dp_10"
android:elevation="@dimen/dp_5"
这两个属性,导致了整个RecycleView 被提高,从而遮盖了swipeRefreshLayout的刷新效果。解决方式,去掉这两个属性,或在给mSwipeRefreshLayout也加上这两个属性
即可