SwipeRefreshLayout手动调用setRefresh(true)不起作用的原因

1.现象
往往发生这个现象是出现在onCreate中去调用这个方法,会发现不起作用.原因是在onCreate方法中view未加载完全,所以不能显示.

2.解决
方法一:用post队列

refreshLayout.post(new Runnable() {  
     @Override  
     public void run() {  
        refreshLayout.setRefreshing(true);  
        onRefresh();//是否触发onRefresh中的方法  
     }  
});  

方法二:手动设置加载图形的偏移量(相对于手动去初始化对应的view)

refresh.setProgressViewOffset(false, 50, 100);  //依次代表:是否缩放加载圆圈,偏移量顶部y值,偏移量底部y值  
refresh.setRefreshing(true);    

方法三:手动监听SwipeRefreshLayout的measure方法完成后再去setRefreshing(true)

rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {  
    @Override  
    public void onGlobalLayout() {  
        root.getViewTreeObserver().removeGlobalOnLayoutListener(this);  
        mRefreshLayout.setRefreshing(true);  
    }  
});   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容