最近觉得使用博客记录开发遇到的问题越来越有必要了,因为之前开发遇到许多问题,解决完后就不再看了,没有总结,所以回顾起来,既不记得遇到过哪些问题,也不记得如何解决的,对于水平不高的初学者的我来说十分不方便,所以从这篇起开始记录以后遇到的问题与解决方案。
这个问题不复杂,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上还有各式方法,但是我觉得这两种就够了

本文记录了一个关于SwipeRefreshLayout的常见问题:调用setRefreshing(true)后指示器不显示。文章提供了两种解决方案:一种是通过post延迟执行设置刷新状态的方法;另一种是重写SwipeRefreshLayout的onMeasure和setRefreshing方法。

2974

被折叠的 条评论
为什么被折叠?



