【发布时间】:2015-05-05 02:39:17
【问题描述】:
我正在使用SwipeRefreshLayout 并希望在创建Activity 后将其设置为刷新,但setRefreshing(true) 不起作用。所以我在 SO:SwipeRefreshLayout setRefreshing not showing indicator initially 中找到了这个问题。
我选择覆盖 SwipeRefreshLayout 来存储本地刷新标志:
public class MyRefreshLayout extends SwipeRefreshLayout {
public MyRefreshLayout(Context context) {
super(context);
}
public MyRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
private boolean mMeasured = false;
private boolean mPreMeasureRefreshing = false;
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (!mMeasured) {
mMeasured = true;
setRefreshing(mPreMeasureRefreshing);
}
}
@Override
public void setRefreshing(boolean refreshing) {
if (mMeasured) {
super.setRefreshing(refreshing);
} else {
mPreMeasureRefreshing = refreshing;
}
}
}
它会在我创建活动后刷新,但不会调用 OnRefreshListener。这是我的初始化代码:
mRefreshLayout = (MyRefreshLayout) findViewById(R.id.refresh_layout);
mRefreshLayout.setColorSchemeResources(R.color.holo_blue_dark, R.color.holo_blue_light, R.color.holo_green_light, R.color.holo_green_light);
mRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mRefreshLayout.setRefreshing(false);
}
});
mRefreshLayout.setRefreshing(true);
找不到相关问题,请帮忙,谢谢!
【问题讨论】:
标签: android