我以前使用的是API 19,而我的许多片段都使用了SwipeRefreshLayout。以前第一次加载内容时,我正在使用setRefreshing(true);并能够加载内容,并且工作正常。

我注意到在Android 5.0中,Google使用的是循环进度 View 。现在,当我调用setRefreshing(true);时,它根本没有任何作用。无论如何,可以通过编程方式显示新的微调器吗?我已经深入研究了这一点,但是无法以编程方式显示出来。我已阅读以下内容:

http://developer.android.com/tools/support-library/index.html

https://yassirh.com/2014/05/how-to-use-swiperefreshlayout-the-right-way/

SwipeRefreshLayout doesn't show any indicator of refreshing

基本上,它没有显示第一次尝试刷新的迹象。

最佳答案

而不是直接设置

getSwipeRefreshLayout().setRefreshing(true);

您可以在UI线程上延迟它,以备后用
getSwipeRefreshLayout().post(new Runnable() {
    @Override public void run() {
        getSwipeRefreshLayout().setRefreshing(true);
    }
});

这对我来说非常适合以onCreateView开始加载,如果也以LoaderManager.LoaderCallbacks完成加载。

我还没有看到进度条意外粘住(因为数据加载太快了),但是如果您怀疑加载可能返回得太早(错误?),值得对进行相同的发布
getSwipeRefreshLayout().setRefreshing(false);

这样,两个post肯定会一个接一个地出现,从而导致绝对隐藏的进度 View 。

关于android - API 21中的SwipeRefreshLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26601175/

10-10 11:53