본문 바로가기

나의 플랫폼/안드로이드

[Android] AppBarLayout in SwipeRefreshLayout

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

SwipeRefreshLayout 안에 AppBar가 있는 경우 Loading 이미지가 원하지 않는 시점에서 보여지는 경우가 발생한다.


최상위 스크롤 에서 이벤트 동작이 일어나지 않고, 

어느 위치에서든지 스크롤을 내리면 LoadingProgressBar가 보이게 되는 것이다.


이럴 경우, AppBarLayout의 addOnOffsetChangedListener를 통하여 해결이 가능하다.


AppBarContainer.addOnOffsetChangedListener(this);


위와 같이 리스너를 등록 한후, 아래와 같이 offset이 0일 경우에는 swipe 동작이 이뤄지도록 설정 하면 된다.

@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (verticalOffset == 0) {
mSwipeRefreshLayout.setEnabled(true);
} else {
mSwipeRefreshLayout.setEnabled(false);
}
}


참고하세요.