상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - ViewPager 내부에서 HorizontalScrollView를 지원하는 방법.
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
ViewPager와 HorizontalScrollView를 함께 사용할 때, 사용자 경험을 고려하여 어떻게 두 컴포넌트를 적절하게 조합할 수 있는지 알아보겠습니다. 이 두 컴포넌트를 함께 사용하려면 몇 가지 사항을 염두에 두어야 합니다. 기본 개념 1. ViewPager : 여러 페이지를 스와이프 할 수 있도록 하는 컴포넌트입니다. 각 페이지는 사용자 정의 뷰일 수 있습니다. 2. HorizontalScrollView : 수평 스크롤이 가능한 뷰 그룹으로, 여러 개의 뷰를 수평으로 배치할 수 있습니다. 문제점 ViewPager와 HorizontalScrollView를 동시에 사용할 경우, 스와이프 제스처와 스크롤 제스처가 충돌할 수 있습니다. 이러한 충돌을 해결하기 위해 터치 이벤트를 오버라이드하거나 조정해야 합니다. 해결 방법 구현 방법은 아래와 같습니다: 1. 커스텀 ViewPager 우선, 터치 이벤트를 적절히 관리하기 위해 Custom ViewPager를 정의합니다. ```java public class CustomViewPager extends ViewPager { private boolean isPagingEnabled = true; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return isPagingEnabled && super.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent ev) { return isPagingEnabled && super.onTouchEvent(ev); } public void setPagingEnabled(boolean enabled) { this.isPagingEnabled = enabled; } } ``` 2. HorizontalScrollView 내에서 스와이프 감지 HorizontalScrollView를 포함할 때, 스와이프와 스크롤을 구분하여 처리하기 위해 아래와 같이 터치 이벤트를 오버라이드합니다. ```java public class CustomHorizontalScrollView extends HorizontalScrollView { public CustomHorizontalScrollView(Context context) { super(context); } public CustomHorizontalScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // 스크롤이 활성화되어있으면 ViewPager가 터치 이벤트를 가로채지 않도록 설정 getParent().requestDisallowInterceptTouchEvent(true); return super.onInterceptTouchEvent(ev); } } ``` 3. XML 레이아웃 구성 Activity 또는 Fragment의 레이아웃 XML 파일에서 CustomViewPager와 CustomHorizontalScrollView를 사용합니다. ```xml <your.package.name.CustomViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Page 1"/> <your.package.name.CustomHorizontalScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:text="Item 1"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:text="Item 2"/> <!-- 필요에 따라 더 추가 --> </LinearLayout> </your.package.name.CustomHorizontalScrollView> </your.package.name.CustomViewPager> ``` 최적화 및 테스트 - 위의 코드는 기본적인 설정을 보여줍니다. 실제 앱에서는 터치와 스와이프 제스처를 더 세밀하게 조정하여 사용자 경험을 개선해야 합니다. - 다양한 기기에서 충분한 테스트를 진행하여, 터치 및 스와이프 동작이 자연스럽고 사용자의 기대에 부합하는지 확인합니다. 이와 같이 ViewPager와 HorizontalScrollView를 조합하여 사용할 수 있습니다. 적절한 이벤트 처리를 통해 두 컴포넌트를 원활하게 결합할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기