您的位置:首页 > 产品设计 > UI/UE

SwipeRefreshLayout,设置setRefreshing(true)没效果的解决方案

2016-04-08 15:26 399 查看

问题描述

使用SwipeRefreshLayout的时,由于刚进入到那个界面的时候要刷新,但是设置setRefreshing(true)并没效果。

原因分析

调用refresh.setRefreshing(true);过早,以至于我们的SwipeRefreshLayout还没有被测量就已经被调用。

解决方案

方案一

swipeRefreshLayout.setProgressViewOffset(false, 0, 100);
swipeRefreshLayout.setRefreshing(true);
onRefresh();


方案二

view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
swipeRefreshLayout.setRefreshing(true);
onRefresh();
view.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});


方案三

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
swipeRefreshLayout.setRefreshing(true);
onRefresh();
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});


注:

方案二和方案三种的view是swipeRefreshLayout的顶层布局。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: