2014-09-25 5 views
0

fragment에는 FrameLayout 아래에 viewPager가있는 FrameLayout에 몇 개의 하위 뷰가 포함 된 두 개의보기가 있습니다. 나는 FrameLayout이에 ACTION_MOVE 같은 작업이있을 때 조각을 대체 할, 그래서 FrameLayout이에 onTouchListener를 추가했지만 작동하지, viewPager가 잘 작동하고, 또한 FrameLayout이의 아이 뷰는 onClick 이벤트가 있습니다fragment에서 viewPager 위의 FrameLayout onTouch 이벤트는 빈을 가로 채기했습니다.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.hall_gift, container, 
      false); 
    frameLayout = (FrameLayout)view.findViewById(R.id.fans_body_title); 
    frameLayout.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getAction()==MotionEvent.ACTION_DOWN){ 
       Log.i(TAG,"ACTION DOWN"); 
      } 

      return false; 
     } 
    }); 
    return view; 
} 
+0

"framlayout" , 당신은'FrameLayout'을 의미합니까? – APerson

+0

예! 철자법에 대해 유감스럽게 생각합니다 !! – Sunday

+0

코드 게시 – mmlooloo

답변

0

당신에게 FrameLayout을 확장하고 onInterceptTouchEvent()를 재정 의하여 자식 뷰에서 터치 이벤트를 가로 챌 수 있습니다. 그런 다음 이전 FrameLayout 대신 자체 정의 된 FrameLayout을 사용하십시오.

Plz은이 문서를 참조하십시오 여기에 http://developer.android.com/training/gestures/viewgroup.html#intercept

는 코드입니다 : 당신이 당신의 FrameLayout이 그것은에 터치를 허용하지 않습니다에

android:clickable="true" 

을 줄 경우

public class MyFrameLayout extends FrameLayout { 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 

    /* 
    * This method determines whether we want to intercept the motion. 
    * If we return true, onTouchEvent will be called. 
    */ 

      final int action = MotionEventCompat.getActionMasked(ev);  
      switch (action) { 
       case MotionEvent.ACTION_MOVE: { 
        if(meet your condition){ 
         return true; 
        } 
       } 

      } 
     return false; 
    } 

} 
+0

제발 당신이 말한 것 .QQ – Sunday

+0

@Sunday 문제가 해결 되었습니까? –

+0

예! frameLayout은 기본값을 도청하지 않습니다. 우리가 oncept를 필요로 할 때 우리는 스스로를 차단해야합니다. – Sunday

1

당신의 뷰 페이지