마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

CustomListView item에 HorizontalScrollView 존재시, 리스트뷰 터치이벤트 동작안함

0 추천
안녕하세요.

커스텀 리스트뷰가 있고 그 뷰의 아이템 레이아웃이 있습니다.

해당 레이아웃은 HorizontalScrollView로 감싸져 있는 상태입니다.

리스트뷰 아이템 각각 가로스크롤 잘 동작 합니다.

그런데 HorizontalScrollView를 사용하면 리스트뷰 OnItemClickListener 를 통해 이벤트가 들어오지 않습니다.

리스트 아이템을 터치했을 때 해당 포지션에 대한 값을 출력해줘야하는데

이벤트가 발생하지 않아 position을 구할 수 없는 상태입니다.

해결 방법이 있을까요 ?
음무 (17,820 포인트) 님이 2016년 3월 16일 질문
자답입니다.
ScrollView에 onTouch 이벤트를 구현했습니다. 포지션은 Adapter의 getView 부분에서 발생하는 position을 ScrollView OnTouchListener이 구현된 클래스에 생성자로 넘겨줬으며,  convertView 가 null일때만 하니 인덱스가 3이 넘어가면 정상적으로 position이 구해지지 않으니, getView 발생 시 마다 터치이벤트를 등록 해 줘야 되네요.

1개의 답변

0 추천
리스트뷰 아이템 컨테이너 레이아웃(최상위 레이아웃)에

android:descendantFocusability="blocksDescendants"

속성을 추가하시면 됩니다.
모나미153 (17,540 포인트) 님이 2016년 3월 16일 답변
추가 했는데 리스트뷰 아이템클릭리스너로 이벤트가 들어오지 않습니다 ..
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:foreground="?android:selectableItemBackground"
    android:descendantFocusability="blocksDescendants"
    android:paddingTop="10dp"
    android:paddingBottom="10dp">

    <HorizontalScrollView
        android:id="@+id/rf_horizon_scroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingRight="5dp"
        android:scrollbars="none">
잠시 구글링을 해봤는데, onItemClick을 쓰지 말고 컨테이너 레이아웃에 onClick을 달아서 쓰라는 정도밖에 나오질 않네요.
저도 직접 실험해보고 말씀드릴게요
감사합니다 ㅠㅠㅠㅠㅠㅠㅠㅠ
이것저것 다 해봤지만\xml단에서 하기는 힘든가보네요..
...