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

来源:互联网 发布:网络流行的词 编辑:程序博客网 时间:2024/06/05 06:40

问题描述

使用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的顶层布局。
0 0
原创粉丝点击