我正在使用Chris Banes ActionBar-PullToRefresh。 我可以通过拉下布局来开始刷新 - 一切都很好。
但是我如何以编程方式强制启动刷新动画(进度动画)?或者我如何以编程方式强制启动完全刷新,就像我拉下布局一样?
尝试:
mPullToRefreshLayout.startLayoutAnimation();
mPullToRefreshLayout.setRefreshing(true);
mPullToRefreshLayout.setActivated(true);
没有任何效果。
我唯一需要做的就是检查isRefreshing
并停止它:
if(mPullToRefreshLayout.isRefreshing()){
mPullToRefreshLayout.setRefreshComplete();
}
请帮忙。
答案 0 :(得分:3)
通常mPullToRefreshLayout.setRefreshing(true);
正在运作(如果getWindow().getWindowToken != null
)。如果那不起作用,你可以看到我的前叉https://github.com/quxey/ActionBar-PullToRefresh
已编辑。试试这个
final ViewGroup decorView = (ViewGroup)getActivity().getWindow().getDecorView();
if(decorView.getWindowToken() == null){
decorView.post(new Runnable() {
@Override
public void run() {
if (decorView.getWindowToken() != null) {
mPullToRefreshLayout.setRefreshing(true);
} else {
decorView.post(this);
}
}
});
}else{
mPullToRefreshLayout.setRefreshing(true);
}
答案 1 :(得分:0)
我简要地浏览了一下库代码,找出了听众的问题。
if (fromTouch) {
if (mOnRefreshListener != null) {
mOnRefreshListener.onRefreshStarted(view);
}
}
方法startRefresh(View view, boolean fromTouch)
的这部分代码。 Param fromTouch
指出谁是刷新发起人。如果你在没有任何触摸的情况下开始你的pulltorefresh,则设置了来自触摸屏的false
,因此不会触发mOnRefreshListener.onRefreshStarted(view);
。我得出结论,该方法仅在拉动触摸时调用。您可以自己检查一下,也许您的问题是一样的。
答案 2 :(得分:0)
@AdamS简化here。一个班轮myRefreshableView.setRefreshing();
我把它放在我的片段onResume()
中。除了因为我以编程方式执行此操作之外,我很乐意刷新而没有拉动刷新反弹。