WheelView(WheelPicker) Click Event
휠뷰 소스를 다운받아 실제로 적용해 봤더니 클릭리스너를 달았을 때 가운데 위치한(선택된) 항목에 클릭이벤트를 먹지 않는다.
추적결과
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을 지운 (왜 만들어놨는지 모르겠다) 코드로 수정하면 정상동작.