2013. 7. 1. 15:03

휠뷰 소스를 다운받아 실제로 적용해 봤더니 클릭리스너를 달았을 때 가운데 위치한(선택된) 항목에 클릭이벤트를 먹지 않는다.


추적결과


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을 지운 (왜 만들어놨는지 모르겠다) 코드로 수정하면 정상동작.

Posted by newkie