最近觉得使用博客记录开发遇到的问题越来越有必要了,因为之前开发遇到许多问题,解决完后就不再看了,没有总结,所以回顾起来,既不记得遇到过哪些问题,也不记得如何解决的,对于水平不高的初学者的我来说十分不方便,所以从这篇起开始记录以后遇到的问题与解决方案。
这个问题不复杂,SwipeRefreshLayout.setRefresh(true)调用后,加载的指示器不显示,只有执行下拉刷新时才显示,这时调用setRefresh(false)可以隐藏指示器。原因是SwipeRefreshLayout要在调用onMeasure()后才能调用setRefresh()。
解决方案有二
refresh.post(new Runnable() { @Override public void run() { refresh.setRefreshing(true); } });或者重写SwipeRefreshLayout
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;
}
}
第一种亲测有效,第二种没试,两个方法都比较简单。stackoverflow上还有各式方法,但是我觉得这两种就够了