본문 바로가기

4. 테크니컬&팁/4.4.Android

안드로이드 ListView에서 WebView 사용시 클릭 문제

ListView에 WebView를 사용하면 해당 WebView에는 클릭 이벤트가 먹지 않습니다. ㅜㅜ

그래서 아래와 같은 방법을 사용하시면 클릭이벤트가 먹습니다.
<WebView android:layout_width="70dp" android:layout_height="wrap_content" 
            android:scrollbars="none"  android:clickable="false" android:focusable="false"
            android:id="@+id/board_item_row_boardwriter_webview" android:layout_marginRight="5dp"/>
헉..
그래도 먹지 않습니다.
focusable이 false로 되어 있으면 되는데.. 실제로는 먹지 않아서 소스에서도 한줄 추가해 주셔야 합니다.
WebView webView = rowHolder.getBoardWriterWebView();
webView.setVisibility(View.VISIBLE);
webView.setFocusable(false);
webView.loadDataWithBaseURL(null, p.getWriter(), "text/html","UTF-8", null);
오.. 이제 되는군요.
이러면 Webview 영역을 클릭하여도 ListView의 클릭이벤트가 먹네요..

요약 : 안드로이드 특징인지 ListView 안에 클릭 가능한 객체(WebView나 버튼 등)가 존재하면
ListView 를 클릭했을때 이벤트를 호출하지 않습니다. Button이나 WebView가 해당 이벤트를 먼저 가로Event를 먹습니다. 그래서 WebView 의 focusable을 false 로 만들어 주면 가능하며 xml에서 설정해도 적용되지 않으므로 코드상에 한번더 설정해줘야 합니다.