没有进度微调器的 SwipeRefreshLayout

SwipeRefreshLayout Without Progress Spinner

是否可以在不显示进度微调器的情况下执行 SwipeRefreshLayout 功能。现在,它的默认拉动刷新行为完美无缺地显示了 Progress 微调器,onRefresh() 我隐藏了它。但是我想将它们全部隐藏起来只是想使用拉动来刷新功能但没有进度微调器。

完成一些 RnD 后找到了一个解决方案,可以帮助其他想要实现此类功能的人

 try {
        Field f = mSwipeRefreshLayout.getClass().getDeclaredField("mCircleView");
        f.setAccessible(true);
        ImageView img = (ImageView)f.get(mSwipeRefreshLayout);
        img.setAlpha(0.0f);
    } catch (NoSuchFieldException | IllegalAccessException e) {
        e.printStackTrace();
    }

你可以把loader送走

yourSwipeToRefresh?.setProgressViewEndTarget(true, -screenHeight)

swipeRefreshLayout.setProgressViewEndTarget(假,0)

swipe_refresh_layout.setProgressViewOffset( 错误的, -200, -200 )

我不同意完全隐藏这个微调器。但直到加载开始然后隐藏它。 我的布局中有许多正在进行的 UI .. 所以我做了什么:

app:refreshing="@{vm.loadingUI1  && vm.loadingUI2  && false}">

loadingUI1 是 LiveData

使用这种方法,您仅将交互式加载显示为操作,并且当加载过程从任何组件开始时它会立即隐藏

除了 的回答和启用未来的滑动刷新:

// Reduses spinner size to 0
swipeRefreshLayout.setProgressViewEndTarget(false, 0); 
// Turns off layout refreshing status
swipeRefreshLayout.setRefreshing(false);