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의 정확한 용도는 잘 모르므로 알아서 공부를 해야할 것 같다. 

 

 

 

반응형
블로그 이미지

REAKWON

와나진짜

,