2013-05-16 11 views
7

Nie znajduję sposobu, aby to zadziałało.Wykonaj kliknięcie pierwszego planu

Moja aplikacja ma 2 ramki FrameLayout z wieloma widokami podrzędnymi (przypuśćmy, że ImageViews dla uproszczenia), ułożone jeden na drugim.

Mój problem polega na tym, że potrzebuję FrameLayout na GÓRĘ i WSZYSTKICH JEJ DZIECI, aby pozwolić, aby dotknięcia przeszły przez nie, docierając do leżącego poniżej FrameLayout (i jego dzieci). Coś jak zdarzenia wskaźnikowe: brak w HTML zastosowany do wszystkich wyświetleń obrazu w TOP framelayout.

Próbowałem setClickable (false) i setEnabled (false) zarówno na FrameLayout i jego dzieci, ale jeśli klikam niepełnosprawnych dzieci (na przykład ImageView), dotyk nie osiągnie podstawowego obrazu (to jest dziecko z dołu FrameLayout)

Poniższy kod jest moją najlepszą próbą wyłączenia FrameLayout i jego elementów podrzędnych (mSlideLayout jest rodzajem FrameLayout, warstwa jest każdym obrazem dzieci podrzędnym). Czy brakuje mi czegoś?

/** Create the layers structure into the layout */ 
void create_layers() { 
    Context context=getActivity(); 
    mSlideLayout.removeAllViews(); 
    for (FunqLayer layer:mLayers) { 
     if (layer!=null) { 
      View v=layer.init_internal(context, mSlideLayout); // constructs the child layer, suppose it's an ImageView 
      if ((v!=null) && (mIsMuteTouches)) { 
       v.setEnabled(false); 
       v.setClickable(false); 
       // this should obviously let touches pass through but it doesnt :(
      } 
     } 
    } 
    if (mIsMuteTouches) { 
     // also do the same in the FrameLayout itself with no luck :(
     mSlideLayout.setEnabled(false); 
     mSlideLayout.setClickable(false); 
    } 
} 

Odpowiedz

7

Tak, obviouly mi brakuje onInterceptTouchEvent, przesłanianie to w framelayout i powrocie prawda czyni powyższą rutynowe zbędny:

FrameLayout slideLayout=new FrameLayout(getActivity()){ 
     @Override 
     public boolean onInterceptTouchEvent(MotionEvent ev) { 
      if (mIsMuteTouches) return true; 
      return super.onInterceptTouchEvent(ev); 
     } 
    }; 
Powiązane problemy