2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

HorizontalScrollView에서 개별 요소의 동작을 다르게 설정하려면?

_____
Q: HorizontalScrollView에서 개별 요소의 동작을 다르게 설정하려면 어떻게 해야 하나요?

A: HorizontalScrollView는 내부에 여러 자식 뷰를 가로로 스크롤할 수 있게 배치하는 컨테이너입니다. 개별 요소에 서로 다른 동작(예: 클릭 이벤트, 터치 반응, 각각 다른 애니메이션 등)을 적용하려면 각 자식 뷰에 별도로 리스너나 처리 로직을 부여하는 방식으로 진행합니다. 주요 방법은 다음과 같습니다.

1. 각 자식 뷰에 리스너 등록하기
HorizontalScrollView 내부의 LinearLayout(또는 다른 ViewGroup)에 여러 뷰가 있을 때, 각 뷰에 `setOnClickListener`나 `setOnTouchListener`를 개별적으로 등록합니다.
```java
View child = linearLayout.getChildAt(i);
child.setOnClickListener(v -> {
// i번째 아이템에 맞는 동작 수행
});
```

2. 뷰 타입에 따른 동작 분기 처리
각 자식 뷰가 버튼, 이미지 등 타입이나 역할이 다를 경우, 뷰 ID나 태그, 포지션 정보를 이용해 조건별로 분기하여 다른 동작을 실행할 수 있습니다.
```java
child.setOnClickListener(v -> {
if (v.getId() == R.id.button1) {
// 버튼1 동작
} else if (v.getTag().equals("special")) {
// 특수 태그가 붙은 뷰 동작
}
});
```

3. 커스텀 뷰 활용
복잡한 동작이 필요한 경우 개별 요소를 커스텀 뷰로 제작해 각각 내부에 고유한 동작과 UI 로직을 내장할 수 있습니다. 그런 커스텀 뷰를 HorizontalScrollView에 배치하면 자연스레 개별 동작이 분리됩니다.

4. MotionEvent 직접 제어 (고급)
터치 이벤트를 더 세밀하게 제어하고 싶으면 `setOnTouchListener`를 통해 `MotionEvent`를 받아 처리할 수 있습니다. 이때 이벤트 좌표를 이용해서 어떤 자식 뷰가 터치되었는지 판단하고, 뷰별 다른 동작을 수행합니다.

5. RecyclerView 대체 고려
HorizontalScrollView는 스크롤과 터치 이벤트를 간단히 처리하기는 편하지만 과도한 개별 동작이나 효율적 재활용이 필요하면 RecyclerView(Horizontal LayoutManager) 활용을 권장합니다. RecyclerView는 ViewHolder 패턴 등으로 각 아이템의 동작을 체계적으로 관리할 수 있습니다.

---

요약:
- 각 자식 뷰에 개별 리스너를 직접 붙인다.
- 뷰 구분을 위한 id, 태그, 포지션 등을 활용해 분기한다.
- 필요 시 커스텀 뷰로 구현해 내부 동작을 분리한다.
- 터치 이벤트를 직접 처리하는 고급 방법도 가능하다.
- 복잡하거나 많은 아이템은 RecyclerView 사용으로 관리 효율화가 가능하다.
`HorizontalScrollView` 내에서 개별 요소의 동작을 다르게 설정하려면, 각 요소에 별도의 클릭 리스너나 동작을 정의할 수 있습니다.

일반적으로 `HorizontalScrollView`는 여러 개의 자식 뷰를 가질 수 있으며, 각 뷰에 대해 독립적인 이벤트 처리를 구현할 수 있습니다.

다음은 Android에서 `HorizontalScrollView`를 사용하여 개별 요소의 동작을 다르게 설정하는 방법에 대한 간단한 예제입니다.

1. XML 레이아웃 설정 먼저, `HorizontalScrollView`와 그 안에 여러 개의 뷰(예: `TextView`, `Button` 등)를 포함하는 XML 레이아웃을 정의합니다.

```xml
작성자: 박수현 [비회원] | 작성일자: 1년 전 2025-04-19 11:21:11
조회수: 108 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.