2010-05-09 15 views
3

Le problème suivant semble unique à 2.1, se produit à la fois sur un émulateur et sur un nexus. Le même exemple fonctionne très bien sur les autres plates-formes que j'ai testées (1.5, 1.6 and 2.0 emulators).Geste de lancement d'Android 2.1 capturé sur textview mais toujours un menu contextuel s'ouvre

J'ai ajouté l'élément gestureListener créé comme décrit dans this post. La différence est que j'ai ajouté l'auditeur sur un TextView qui a également un contextMenu enregistré, à savoir qqch comme ce qui suit:

onCreate(...) { 
    ... 
    // Layout contains a large TextView on which I want to add a context menu 
    tv = findViewById(R.id.text_view); 
    tv.registerForContextMenu(this); 

    // create the gestureListener according above mentioned post. 
    gestureListener = ... 
    // set the listener on the text-view 
    tv.setOnTouchListener(gestureListener); 
    ... 
} 

Lors du test il, le geste correct est reconnu bien, mais tous les temps provoque également l'ouverture du menu contextuel. Comme le même exemple fonctionne sur des plates-formes non 2.1, j'ai l'impression que ce n'est pas mon code qui est le problème ...

Reconnaissant pour toutes les suggestions.

Mise à jour: Semble que la valeur de retour est inversée quelque part. Si je laisse onFling() retourner la "mauvaise" valeur, c'est-à-dire vrai quand l'événement est ignoré et faux quand il a été consommé, cela fonctionne correctement dans 2.1. Mais bien sûr, cela ne fonctionne pas sur les autres plates-formes. On dirait que son temps pour une solution de contournement laide ...

+2

Je viens de me lancer dans ce problème de gestures vs contextmenu également. Avez-vous trouvé une solution? et est-ce que vous signalez http://code.google.com/p/android/issues/detail?id=8497? – SteelBytes

Répondre

1

Merci pour le lien steelbytes. J'ai implémenté la solution cancel-and-return-false dans le dernier commentaire (27 déc 2010) mais uniquement pour mon événement onFling et il semble fonctionner sur les périphériques 1.6 et 2.x.