Как отключить макет обновления смахивания, когда RecyclerView не на первом элементе? - PullRequest
1 голос
/ 08 апреля 2019

В моем проекте я использую swiperefreshlayout и recyclerview. Я хочу отключить функцию swiperefreshlayout, когда не отображается первый элемент. как мне это сделать? У меня есть код, но он не работает:

int topRowVerticalPosition = (myRecyclerView == null || myRecyclerView.getChildCount() == 0) ? 0 : myRecyclerView.getChildAt(0).getTop();
                swipeRefreshLayout.setEnabled(layoutManager.findFirstCompletelyVisibleItemPosition() == 0 && topRowVerticalPosition >= 0);

1 Ответ

1 голос
/ 08 апреля 2019

Вам необходимо добавить OnScrollListener к RecyclerView примерно так, и вы можете включить / отключить swipeRefreshLayout, используя видимость первого ребенка RecyclerView:

myRecyclerView.addOnScrollListener(new OnScrollListener() {
  @Override
  public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
    View firstChild = recyclerView.getChildAt(0);
    swipeRefreshLayout.setEnabled(firstChild.getVisibility() == View.VISIBLE);
  }
});
...