안드로이드
[안드로이드] RecyclerView 수평 이동 및 한번에 항목 하나만 보이게 만들기
REAKWON
2020. 7. 1. 23:17
RecyclerView로 수직 이동은 많이 해보았지만 수평이동을 하고 싶을때는 LinearLayoutManager를 아래와 같이 생성하면 된다. 기본적으로 LinearLayoutManager를 사용하면 수직 이동이다.
recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false));
이렇게만 만들면 아이템을 양옆으로 드래그할때 아무 지점의 임의에 위치에서 멈추는데, 혹시 멈출때 어떤 하나의 아이템의 위치에서 멈추게 만들고 싶다면 SnapHelper의 객체를 이용하면 되는데 아래의 코드를 추가하면 된다.
recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false));
recyclerView.setAdapter(adapter);
SnapHelper snapHelper = new PagerSnapHelper();
if (recyclerView.getOnFlingListener() == null)
snapHelper.attachToRecyclerView(recyclerView);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager layoutManager =
LinearLayoutManager.class.cast(recyclerView.getLayoutManager());
}
});
SnapHelper의 정확한 용도는 잘 모르므로 알아서 공부를 해야할 것 같다.
반응형