Bonjour à toutes et à tous,

Un nouveau problème se pose à moi suite à l'utilisation d'un scrollView.

Avant que je n'utilise le scrollView, J'avais créé une méthode qui permettait de déplacer un opérateur dans la fenêtre en appuyant sur cet opérateur et en le déplaçant. En simplifié, c'est le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
planSchema.setOnTouchListener(new View.OnTouchListener() { // Action sur le plan Schéma
 
	@Override
	public boolean onTouch(View v, final MotionEvent event) {
		int action = event.getAction();
		switch (action & MotionEvent.ACTION_MASK) {
			case MotionEvent.ACTION_DOWN:
				boolean vu = false;
				for (int i = 0; i < listOpe.size(); i++) {
					if (listOpe.get(i).isConcerned(event.getX(), event.getY())) { // le touché est sur un opérateur
						opeCours = listOpe.get(i);
						vu = true;
						break;
					}
				}
				if (!vu) { // le touché est à côté d'un opérateur, on voudrait déplacer la fenêtre par le scrolling
					}
				break;
			case MotionEvent.ACTION_MOVE:
				if (opeCours != null) {
					opeCours.deplace(event.getX(), event.getY()); // On redessine l'opérateur à sa nouvelle position au fur et à mesure du déplacement
				}
				break;
			case MotionEvent.ACTION_UP:
				break;
		}
		schema.invalidate(); // On redessine le schéma
		return false;
	}
});
Maintenant, j'ai ajouté mon scrollView. Si je fais la même manipulation : j'appuie sur un opérateur et commence à déplacer le doigt, l'opérateur suit un court moment, puis c'est tout le schéma qui se déplace d'un bloc ; autrement dit c'est le scrolling qui déplace toute la fenêtre.

Comment pourrais-je modifier la méthode setOnTouchListener de telle manière que lorsque je déplace un opérateur, seul cet opérateur se déplace, mais si j'appuie dans un espace où il n'y a pas d'opérateur, c'est le scrolling qui agit.

Cela revient à faire le pseudo code suivant :

Si appui sur un opérateur :
- le déplacer,
- empêcher le scrolling d'agir.

C'est cette dernière instruction que je ne sais pas faire.

Merci de votre aide.

Pierre