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.