【问题标题】:Chris Banes ActionBar-PullToRefreshChris Banes ActionBar-PullToRefresh
【发布时间】:2014-02-21 09:59:02
【问题描述】:

我正在使用 Chris Banes ActionBar-PullToRefresh。 我可以通过下拉布局开始刷新 - 一切都很好。

但是如何以编程方式强制开始刷新动画(进度动画)?或者我如何强制以编程方式开始完全刷新,就像我拉下布局一样?

试过了:

mPullToRefreshLayout.startLayoutAnimation();
mPullToRefreshLayout.setRefreshing(true);
mPullToRefreshLayout.setActivated(true);

没有任何效果。

我唯一要做的就是检查isRefreshing并停止它:

if(mPullToRefreshLayout.isRefreshing()){
   mPullToRefreshLayout.setRefreshComplete();
}

请帮忙。

【问题讨论】:

标签: android android-listview android-fragments pull-to-refresh


【解决方案1】:

通常mPullToRefreshLayout.setRefreshing(true); 正在工作(如果getWindow().getWindowToken != null)。如果这不起作用,您可以查看我的 fork 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);
                    }

【讨论】:

  • 我知道这应该有效,但它没有。我的应用程序似乎有问题,作为临时措施,我已经在 GMail 中完成了初始刷新的进度条。将来会研究它来修复:)
【解决方案2】:

我简要浏览了库代码并找出侦听器可能出问题的地方。

    if (fromTouch) {
        if (mOnRefreshListener != null) {
            mOnRefreshListener.onRefreshStarted(view);
        }
    }

这部分代码来自方法startRefresh(View view, boolean fromTouch)。参数fromTouch 指出谁是刷新发起者。如果您在没有任何触摸的情况下启动 pulltorefresh,则 fromTouch 设置为 false,因此不会触发 mOnRefreshListener.onRefreshStarted(view);。我得出的结论是,该方法仅在拉动时调用。你可以自己检查一下,也许你的问题是一样的。

【讨论】:

    【解决方案3】:

    @AdamS 让事情变得简单了here。一个衬里myRefreshableView.setRefreshing(); 我把它放在我的片段的onResume() 中。除了因为我以编程方式执行此操作外,我希望刷新没有下拉刷新反弹

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多