J'ai Scrollable J'ai essayé de faire des tours, comme envoyer le même textview code> et
Galerie code>
Lorsque j'active le
Ontouchevent () code> pour le
textview code>, je ne peux pas naviguer dans la galerie
code>
et si je désactive le
Ontouchevent () code>, je peux faire défiler la droite et la gauche de la galerie
code>
mais ne peut pas faire défiler vers le bas dans
textview code>. p>
motionEvent () code> à la fois
Galerie code> et
textview code>
..
Des idées comment le résoudre? P>
7 Réponses :
au lieu d'Ontchevent Pourquoi n'utilisez-vous pas ONCLICK Event pour TextView Inside Gallery sur MotionEvent P>
Je ne manipule pas le Cliquez sur CODE> Event, Handling
Touchez CODE> Événements !!
Essayez de définir renvoyer false code> in inouch. p>
Il est possible que textview code> et / ou
Galerie code> s'efforce de se concentrer sur le code> listview code> si vous utilisez une ou la capacité de défilement Ainsi, ce qui ne peut pas faire défiler de haut en bas, essayez de supprimer Fonctionnement du TextView and Gallery et de voir si cela aide du tout. Ensuite, vous devriez être capable de toujours utiliser vos Touchevents ... Juste une pensée, je ne sais pas si cela corrigeait cependant le problème. J'aimerais pouvoir être plus d'aide. P>
Créer une vue personnalisée qui étend une disposition de conteneur et contient votre texte défilableView. Utilisez ceci comme articles de galerie. P>
Hey, vous devez essayer ce code, il vous aidera dans votre problème
float oldx; float oldy; @Override public boolean onTouchEvent(MotionEvent event) { boolean result = false; if(event.getAction() == MotionEvent.ACTION_DOWN) { result = super.onTouchEvent(event); } else if (event.getAction() == MotionEvent.ACTION_UP) { result = super.onTouchEvent(event); } else if (event.getAction() == MotionEvent.ACTION_MOVE) { /** * Condition :: Math.abs(oldx - event.getX()) > 10 will check weather user had drag horizontal or vertical. * You can change value 10 according to your requirement */ if(Math.abs(oldx - event.getX()) > 10) { result = super.onTouchEvent(event); } else { result = true; } } oldx = event.getX(); oldy = event.getY(); return result; }
Avez-vous essayé d'utiliser ScrollView dans la galerie? Voici quelques exemples de travail: ScrollView Inside Gallery, tous deux défilant de manière indépendante P >
Ma réponse:
public class CustomGallery extends Gallery { public CustomGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomGallery(Context context, AttributeSet attrs) { super(context, attrs); } public CustomGallery(Context context) { super(context); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float r = (velocityX > 0 ? Math.min(800f, velocityX) : Math.max(-800f, velocityX)); return super.onFling(e1, e2, r, velocityY); } float oldX, oldY; boolean isDown = false; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: oldX = ev.getX(); oldY = ev.getY(); isDown = true; return super.onInterceptTouchEvent(ev); case MotionEvent.ACTION_MOVE: if (isDown) { float diffX = Math.abs(ev.getX() - oldX); float diffY = Math.abs(ev.getY() - oldY) + 20f; if (diffY > diffX) { return false;// handled by TextView } } return true;// handled by Gallery case MotionEvent.ACTION_UP: isDown = false; return super.onInterceptTouchEvent(ev); default: return super.onInterceptTouchEvent(ev); } } }
@Nathan Fig, je vais essayer de faire un échantillon.