2016-07-15 7 views
3

Ich verwende [YouTubePlayerFragment][1], um eingebettete Youtube-Videofunktionen zu einer Android-App hinzuzufügen. Die Videovorschau (Miniaturansicht) wird mit dem Fragment angezeigt, das Teil einer Zelle einer Recycler-Ansicht ist. Tippen Sie auf die Zelle sollte die Videowiedergabe (überall, nicht nur Fragment) aktivieren und es funktioniert einfach großartig und aktiviert die Videowiedergabe. Leider fängt das Fragment selbst alle Berührungen ab und erlaubt mir nicht, das Video über den Fragment-Tap zu aktivieren.Android YouTube Player-API-Fragment bietet keine Möglichkeit, Touch-Ereignisse manuell zu behandeln

Ich habe versucht, zum Zellstamm android:clickable="true" hinzufügen und einen Touch-Listener einrichten - Ereignisse kommen nicht.

Ich habe auch versucht, einen Touch-Listener auf Fragment-Ansicht (fragment.View.setOnTouchListener) zu installieren - gleicher Effekt, Ereignis nicht kommen.

Wie kann ich Fragment tippen und meinen benutzerdefinierten Code ausführen?

p.s. Ich habe versucht, YouTubeThumbnailView und es funktioniert nicht für mich, weil die einzige Möglichkeit, das Video zu spielen ist YouTubeStandalonePlayer und Absicht, die neue Aktivität aktiviert, während ich in meiner aktuellen Aktivität ohne einen Kontextwechsel bleiben möchte.

Antwort

-1

Ich weiß, diese Frage ist ziemlich alt, aber ich habe das gleiche Problem angetroffen.

wurde die Lösung YouTubePlayerFragment innerhalb eines benutzerdefinierten Layout bringen (zB von abgeleiteten LinearLayout) und außer Kraft setzen ihre onInterceptTouchEvent Methode:

@Override 
public boolean onInterceptTouchEvent(MotionEvent motionEvent) { 
    final int action = motionEvent.getAction(); 

    switch (action) { 
     case MotionEvent.ACTION_DOWN: 
      // on touch started 
      break; 

     case MotionEvent.ACTION_UP: 
     case MotionEvent.ACTION_CANCEL: 
      // on touch finished/cancelled 
      break; 

     case MotionEvent.ACTION_MOVE: 
      // on touch moved 
      break; 
    } 

    return false; 
} 
1

konnte ich es, indem das YouTubePlayerFragment in einem benutzerdefinierten Linearlayout zum Laufen bringen:

public class TouchEventLayout extends LinearLayout { 

    public TouchEventLayout(Context context) { 
     super(context); 
    } 

    public TouchEventLayout(Context context, AttributeSet attrs) { 
     super(context, attrs, 0); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     return super.onInterceptTouchEvent(ev); 
    } 
}