휠뷰 소스를 다운받아 실제로 적용해 봤더니 클릭리스너를 달았을 때 가운데 위치한(선택된) 항목에 클릭이벤트를 먹지 않는다.
추적결과
WheelView.java
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled() || getViewAdapter() == null) {
return true;
}
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if (getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(true);
}
break;
case MotionEvent.ACTION_UP:
if (!isScrollingPerformed) {
int distance = (int) event.getY() - getHeight() / 2;
if (distance > 0) {
distance += getItemHeight() / 2;
} else {
distance -= getItemHeight() / 2;
}
int items = distance / getItemHeight();
Log.i("WheelView","======items====="+items);
//if (items != 0 && isValidItemIndex(currentItem + items)) { <------------이부분
if (isValidItemIndex(currentItem + items)) {
notifyClickListenersAboutClick(currentItem + items);
}
}
break;
}
return scroller.onTouchEvent(event);
}
가운데를 클릭하면 저기서 씹혀서 반응이 없는 것이므로.
해당 라인 주석처리하고 items!=0을 지운 (왜 만들어놨는지 모르겠다) 코드로 수정하면 정상동작.
'안드로이드' 카테고리의 다른 글
어플리케이션 중복 실행 방지 (0) | 2014.08.19 |
---|---|
안드로이드 네이버 지도 API 분석중 (0) | 2013.08.05 |
앱에서 카카오톡으로 메세지,그림 보내기 (0) | 2013.06.28 |
EditText 키보드 imeOptions (0) | 2013.05.22 |
안드로이드 sqlite (0) | 2013.05.10 |