网上找了一些解决方式,如下两种:
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
也加上这两个属性 即可