2014-09-19 2 views
0

두 가지 유형의보기를 포함 할 수있는 ViewPager가 있습니다. 뷰 유형 중 하나에는 버튼이 있지만 뷰 유형 중 하나는 그렇지 않습니다. 버튼없는보기 유형은 이미지를 이동하고 확대/축소하기 위해 onTouchEvent에서 터치를 트랩해야합니다. 하지만 ViewPager (클릭 리스너가 연결되어 있음)에 클릭이 들어가도록하고 싶습니다.onTouchEvent에서 클릭 수가 위로 올라가도록 허용하는 방법

뷰의 onTouchEvent ACTION_DOWN에서 true를 반환해야합니다. 그렇지 않으면 향후 이벤트가 표시되지 않습니다.

견해 중 하나는 단추가 않습니다 그 버튼들이 클릭해야하기 때문에 내가 클릭을 캡처 할 ViewPager에서 onInterceptTouchEvent()를 사용할 수 없습니다

어떻게 내보기 트랩 와이프 수 및 클릭 거품을 위로하자?

답변

0

가 아이에게 파견으로 필요한 경우에만 Views`

+0

질문에서 언급했듯이, 나는 그것을 할 수 없습니다. 하지만 시간을내어 주셔서 감사합니다 : – MikeWallaceDev

+0

인터페이스를 사용하여 시도하고 구현하십시오. – Panther

0

적절한 방법이 onInterceptTouchEvent에서 진정한 반환하여 당신이 차단하려는 경우에만 이벤트를 가로 챌 아마 이벤트를 볼 수있는 뷰 그룹을이 ViewGroup.onInterceptTouchEvent(MotionEvent) .This을 허용 사용해보십시오 .

어두운면을 가지고 가고 싶다면 더러운 대안이 있습니다. 아마 당신을 유혹 할 것이며 아마도 나중에 후회할 것입니다. 모든 이벤트를 차단 한 다음 필요한 경우 전달하십시오.

당신이의 이벤트를 처리 할 뷰 페이저 티엔

@Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 

     return true; 
    } 

이 당신의 viewpager 내부

public void interceptTouch(MotionEvent ev) { 
     // here you react to the event 
} 

같은 터치 이벤트를 처리

 public boolean canInterceptTouch(MotionEvent ev) { 
     // return true if you are interested in this touch event, e.g. it falls into 
     // a clickable area 
} 

뭔가처럼보기 뭔가 내부에있다 더러운 이런 식으로 :

@Override 
    public boolean onTouchEvent(MotionEvent ev) { 

    if (yourView.canInterceptTouch(ev))) { 
      yourView.interceptTouch(ev); 
      return true; 
    } else { 
     return doSomethingElse(); 
    } 
} 

참고 : 모션 이벤트를 처리하는 데 매우 간단한 로직을 사용하지 않으면 괜찮은 결과와 함께 비슷한 것을 했음에도 불구하고 솔루션으로 권장하지 않습니다. 그렇지 않으면 모션이 엉망이됩니다. 당신이 미래를 제대로하기 위해 시간을 보내면 미래의 자아가 더 행복해질 것입니다.

EDIT : 코드가 테스트되지 않았으므로 필요한 항목을 알 수 있습니다. 모든 오타를 유감스럽게 생각합니다.

+1

나는 미래가 나를 사랑하며 고의적으로 그를 괴롭히는 일을 결코하지 않을 것입니다. 하지만 당신이 나 한테 힌트를 준 것 같아. 나는 이것을 거꾸로하고 있었다. 내가 원하는 모든 것을 가로 채고 클릭이 진행되도록해야합니다. 아니, 젠장, ViewGroup에만 onIntercept가있다. 좋지 않다. – MikeWallaceDev

+0

이렇게 넣어 보겠습니다. 여기 onitercepttouch는 이벤트를 수신합니다. false를 반환하면 계속 전달되지만 하위 뷰로 전달됩니다. true를 돌려 주면, 이벤트는 뷰 페이지의 ontouchevent로 이동합니다. http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent) 에서이 문서를 읽어야 만 몇 차례이 작업을 이해할 수있었습니다. 그 동안 나는 이미 어두운면에있었습니다 ... –

+0

이제는 제 책상에 앉아서 이걸 더 잘 볼 수있게되었습니다 ... 실제로 제가 가지고있는 것입니다 :) 나는 용기가 필요 없다고 생각합니다. 세부 정보를 알고 다른 곳에서보기를 재사용 할 수 있습니다. – MikeWallaceDev